【问题标题】:What should I do if I want to print value of ' i ' when I clicked 'like[i]' button? Like when I click on 'Button 2' then it should give me value '2'如果我想在单击“like[i]”按钮时打印“i”的值该怎么办?就像当我点击“按钮 2”时它应该给我价值“2”
【发布时间】:2021-01-15 01:15:22
【问题描述】:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class button_array extends JFrame{
    int i;
    JLabel[] ulb = new JLabel[4];
    JButton[] like = new JButton[4];
    JPanel panel = new JPanel();
    public button_array() {

        new JFrame();
        i =3;
        while(i>0) {
            ulb[i] = new JLabel("user "+i);
            like[i] = new JButton("Button "+i);
            
            
            panel.add(ulb[i]);
            panel.add(like[i]);
            panel.add(Box.createVerticalStrut(25));
            
            like[i].addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    System.out.println(i);
                }
            });
            
            i--;
        }
    
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
    add(panel);
    setSize(400,400);
    setVisible(true);
    }
    public static void main(String[] args) {
        new button_array();
    }
}
  1. 如何在已执行的操作部分中获取值 id 'i'。对于我单击的每个按钮,它都会将 'i' 的值设为 0。
  2. 如果我想在单击“like[i]”按钮时打印“i”的值该怎么办。就像当我点击“按钮 2”时它应该给我价值“2”

here's a link of screenshot

【问题讨论】:

  • 请不要链接无关的截图。那一句什么都没有是几句话无法解释的。

标签: java swing arraylist jbutton


【解决方案1】:

这段代码:

    System.out.println(i);

不会起作用,因为当你点击时,它会在那个时刻取i的值,等于0,因为i--在循环中。

所以,如果你想在like[] 中打印JButtonindex,你可以在覆盖actionPerformed 中这样做:

@Override
public void actionPerformed(ActionEvent e) {
    JButton o = (JButton)e.getSource();
                    
    for (int j = 0; j < like.length; j++)
    {                        
        if (like[j]!= null && (JButton)like[j] == o)
        {
            System.out.println(j);
        }
    }
}

或者直接打印JButton.getText()的数字字符:

@Override
public void actionPerformed(ActionEvent e) {
    JButton o = (JButton)e.getSource();
    String str1 = o.getText();

    String str2 = str1.substring(6, str1.length());
    System.out.println(j);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 2013-09-29
    • 2022-08-10
    • 2022-11-12
    • 2017-10-25
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多