我有一个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) {}
[....]
}
答案 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())
)