我用二维数组在Buttons中创建了一个Gridlayout。 当我按下按钮时,我想从另一个类执行一个需要按下按钮的坐标的方法。 我想将这些数字保存在数组中。
int buttonCoordinates[2]
我已经创建了一个动作监听器
jBTN_field[y][x].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent pE) {
}
}
我想将坐标保存在数组中。
答案 0 :(得分:1)
到目前为止,在没有尝试更改程序结构的情况下,这是一种“幼稚”的方法。
可以使用另一个类来代替使用Anonymous Inner Class:
public class MyListener implements ActionListener {
private int x;
private int y;
public MyListener(int x, int y){
this.x = x;
this.y = y;
}
@Override
public void actionPerformed(ActionEvent e) {
//do something with this.x
//do something with this.y
}
}
然后您可以将其修改为您的代码:
jBTN_field[y][x].addActionListener(new MyListener(x, y));
现在,要访问按钮的坐标,它将非常简单:
button[y][x].
您的代码在逻辑上没有错。我只是向您展示一个替代方案,它可以简化您的工作,因此您可以更有条理地解决您的问题。如果您希望所有按钮都具有相同的
actionPerformed()
功能,那么我展示的示例是合适的。否则,更适合使用匿名内部类。
或者,如果您希望保持代码不变,则可以执行以下操作:
jBTN_field[y][x].addActionListener(new ActionListener() {
int x = "value_for_x", y = "value_for_y";
@Override
public void actionPerformed(ActionEvent pE) {
//do something with x
//do something with y
}
}