GetSource?如何在数组中保存按钮的位置? (网格布局)

时间:2019-05-06 14:45:36

标签: java arrays swing jbutton actionlistener

我用二维数组在Buttons中创建了一个Gridlayout。 当我按下按钮时,我想从另一个类执行一个需要按下按钮的坐标的方法。 我想将这些数字保存在数组中。

int buttonCoordinates[2]

我已经创建了一个动作监听器

jBTN_field[y][x].addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent pE) {

    }
}

我想将坐标保存在数组中。

1 个答案:

答案 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
    }
}