java - 获取源?如何将按钮的位置保存在数组中?(网格布局)
问题描述
我用二维数组创建了一个 Gridlayout。当我按下按钮时,我想执行另一个类的方法,该方法需要已按下按钮的坐标。我想将这些数字保存在一个数组中。
int buttonCoordinates[2]
我已经创建了一个动作监听器
jBTN_field[y][x].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent pE) {
}
}
我想将坐标保存在数组中。
解决方案
到目前为止,在不尝试改变程序结构的情况下,这是一种“幼稚”的方法。
您可以创建另一个类,而不是使用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
}
}