JButton的gridLayout,每个JButton的actionListener

时间:2015-05-07 16:53:17

标签: java jbutton actionlistener grid-layout

我有一个JButtons的gridLayout。我想在actionPerformed函数中区分每个JButton。 我不想“命名”每个JButton。用户随机按下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) {}
          [....]

   }

1 个答案:

答案 0 :(得分:0)

如果您希望使用单个ActionListener,可以使用getSource按钮检查哪个Component触发了事件,并将实例与JButton实例进行比较。下面使用循环遍历JButtons的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
            }
        }
    }
}

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