Java:按钮数组-获取源代码

Java:按钮数组-获取源代码,java,arrays,jbutton,actionlistener,Java,Arrays,Jbutton,Actionlistener,假设我有一组按钮 private JButton[] myButtons = new JButton[5]; for (int i=0; i<5; i++) { myButtons[i] = new JButton(Integer.toString(i)); myButtons[i].setSize(50, 50); panel.add(myButtons[i]); } private JButton[]myButtons=newjbutton[5]; 对于(i

假设我有一组按钮

private JButton[] myButtons = new JButton[5];

for (int i=0; i<5; i++)
{
    myButtons[i] = new JButton(Integer.toString(i));
    myButtons[i].setSize(50, 50);
    panel.add(myButtons[i]);
}
private JButton[]myButtons=newjbutton[5];

对于(int i=0;i您可以在循环中添加侦听器,如下所示,如果您使用类实现
ActionListener
接口

class TestGUI extends JPanel implements ActionListener{
 public TestGUI(){
  for(int i=0; i< 5; i++){
  ....
  myButtons[i].addActionListener(this);
 }
}
而不是在点击按钮时,您可以检查的actionPerformed方法

public void actionPerformed(ActionEvent e){
   if("0".equals(e.getActionCommand())){
     System.out.println("First button is clicked");
   }
   ... so on
}

你不在乎,首先在按钮上添加一个
ActionListener

myButtons[i].addActionListener(this); // Or some other ActionListener
actionPeformed
方法中,您可以使用
ActionEvent#getSource

@Override
public void actionPerformed(ActionEvent evt) {
    for (JButton btn : myButtons) {
        if (btn.equals(evt.getSource()) {
            // Do what ever you need
            break;
        }
    }
}
您还可以使用
JButton

for (int i=0; i<5; i++)
{
    myButtons[i] = new JButton(Integer.toString(i));
    myButtons[i].setActionCommand("button " + i);
    myButtons[i].addActionListener(this);
    panel.add(myButtons[i]);
}
另一个想法是使用
操作
API,它允许您定义一个自包含的实体,该实体能够自行配置按钮并处理相关的操作事件。有关更多详细信息,请参阅


但是,您可能会使用哪种方法,这将归结为您首先需要识别按钮的原因。

以及获取所单击按钮的数组索引?我相信这一部分很容易理解,您不同意吗?@Eclipse22,getActionCommand将为您提供按钮的文本。在您的情况下,它将是“0”、“1”。您能解释一下“myButtons”吗[i] .addActionListener(这个);“最好是因为我个人觉得这会让人困惑。这将如何重新认识正确的事情?再加上一个你知道的最后一个想法是什么awesome@KickButtowski您可以使用
ActionEvent#getSource
并将其与
按钮
数组进行比较,或者使用
actionCommand
(最好)按钮和动作事件的属性
for (int i=0; i<5; i++)
{
    myButtons[i] = new JButton(Integer.toString(i));
    myButtons[i].setActionCommand("button " + i);
    myButtons[i].addActionListener(this);
    panel.add(myButtons[i]);
}
public class ButtonActionHandler implements ActionListener {
    private final JButton button;
    public ButtonActionHandler(JButton button) {
        this.button = button;
    }

    public void actionPerformed(ActionEvent evt) {
        // Do what ever you need to do with the button...
    }
}

for (int i=0; i<5; i++)
{
    myButtons[i] = new JButton(Integer.toString(i));
    myButtons[i].addActionListener(new ButtonActionHandler(myButtons[i]));
    panel.add(myButtons[i]);
}