Java JButton的gridLayout,每个JButton的actionListener

Java JButton的gridLayout,每个JButton的actionListener,java,jbutton,actionlistener,grid-layout,Java,Jbutton,Actionlistener,Grid Layout,我有一个网格布局的按钮。我想在actionPerformed函数中区分每个JButton。 我不想“命名”每个按钮。用户随机按下一个按钮。有没有办法知道按下了哪个按钮? 有可能吗 [....] tUsuariCPU = new JButton[mida][mida]; for (int i=0;i<size;i++){ for (int j=0;j<size;j++){ JButton temp = new JButto

我有一个网格布局的按钮。我想在actionPerformed函数中区分每个JButton。 我不想“命名”每个按钮。用户随机按下一个按钮。有没有办法知道按下了哪个按钮? 有可能吗

    [....]
    tUsuariCPU = new JButton[mida][mida];
    for (int i=0;i<size;i++){
        for (int j=0;j<size;j++){
            JButton temp = new JButton();
            tUsuariCPU[i][j] = temp; 
            temp.addActionListener(this);
            panel.add(temp);
        }
      }
   }

   public void actionPerformed(ActionEvent e) {}
          [....]

   }
[…]
tUsuariCPU=新的JButton[mida][mida];

对于(int i=0;i如果您希望使用单个
ActionListener
,您可以通过使用
getSource
按钮并将实例与JButton实例进行比较来检查触发事件的组件。下面使用一个循环来循环JButton的2D数组:

public void actionPerformed(ActionEvent e) {}
    for ( int i = 0; i < tUsuariCPU.length; i++ ){
        for ( int j = 0; j < tUsuariCPU[i].length; j++ ){
            if ( e.getSource() == tUsuariCPU[i][j] ){
                //do something
            }
        }
    }
}
public void actionPerformed(ActionEvent e){
for(int i=0;i

或者,您可以为每个按钮添加一个ActionListener,或者设置JButton的ActionCommand并使用此值确定哪个JButton触发了事件(
e.getActionCommand().equals(myButton.getActionCommand())

您可以使用JButton.setName()来区分它们(首选)或者您可以为每个按钮创建一个ActionListener