Wil*_*aan 1 java arrays swing jbutton actionlistener
我有一个类Game和一组按钮buts,我想fun(i,j)在点击任何buts [i] [j]时调用Game类的函数,我试着这样:
buts = new JButton[Setting.length][Setting.width];
Game game = new Game(setting);
int hgap = 4, vgap = 4;
panel = new JPanel(new GridLayout(Setting.length, Setting.width, hgap, vgap));
for (int i = 0; i < Setting.length; i++) {
for (int j = 0; j < Setting.width; j++) {
//JButton btn = new JButton();
buts[i][j] = new JButton();
buts[i][j].setText(String.valueOf(j));
setColor(buts[i][j], Game.cells[i][j].getColor());
buts[i][j].addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonActionPerformed(evt);
}
});
panel.add(buts[i][j]);
}
}
private void buttonActionPerformed(ActionEvent evt) {
}
Run Code Online (Sandbox Code Playgroud)
但是我如何将i,j发送给函数buttonActionPerformed?
你可以用一个具体的行动为每个JButton并传入值i和j到类的构造函数.
添加:
buts[i][j].setAction(new MyAction(i, j));
Run Code Online (Sandbox Code Playgroud)
该Action实施:
class MyAction extends AbstractAction {
private final int iValue;
private final int jValue;
public MyAction(int i, int j) {
this.iValue = i;
this.jValue = j;
}
@Override
public void actionPerformed(ActionEvent e) {
buttonActionPerformed(e, iValue, jValue);
}
}
Run Code Online (Sandbox Code Playgroud)
和:
private void buttonActionPerformed(ActionEvent evt, int i, int j) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |