首页 > 解决方案 > 获取源?如何将按钮的位置保存在数组中?(网格布局)

问题描述

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

int buttonCoordinates[2]

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

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

    @Override
    public void actionPerformed(ActionEvent pE) {

    }
}

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

标签: javaarraysswingjbuttonactionlistener

解决方案


到目前为止,在不尝试改变程序结构的情况下,这是一种“幼稚”的方法。

您可以创建另一个类,而不是使用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
    }
}

推荐阅读