Java 获取来源?如何在数组中保存按钮的位置?(网格布局)

Java 获取来源?如何在数组中保存按钮的位置?(网格布局),java,arrays,swing,jbutton,actionlistener,Java,Arrays,Swing,Jbutton,Actionlistener,我用带有二维数组的按钮创建了一个Gridlayout。 当我按下按钮时,我想从另一个类执行一个方法,这个类需要按钮的坐标。 我想将这些数字保存在一个数组中 int按钮坐标[2] 我已经创建了一个actionlistener jBTN_字段[y][x].addActionListener(新ActionListener()){ @凌驾 已执行的公共无效操作(操作事件pE){ } } 我想将坐标保存在数组中。到目前为止,在不尝试更改程序结构的情况下,这里有一种“简单”的方法 您可以创建另一个类,

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

int按钮坐标[2]
我已经创建了一个actionlistener

jBTN_字段[y][x].addActionListener(新ActionListener()){
@凌驾
已执行的公共无效操作(操作事件pE){
}
}

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

到目前为止,在不尝试更改程序结构的情况下,这里有一种“简单”的方法

您可以创建另一个类,而不是使用:

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

你为什么需要坐标?这个数组将存储一个数字,你确定它是你想要的吗?你尝试了什么?这个空的
ActionListener
告诉我们什么都没有。@Frakcool它应该存储两个数字。x和y。好的,我明白你的意思。再说一次,你尝试了什么?请发布一个适当的说明你尝试了什么,然后w您有哪些问题。@_标签另外,如果您只想传递x和y作为参数,那么为什么要使用匿名内部类?创建一个“normal”类,该类实现ActionListener并重写actionPerformed方法,以添加参数Actionevent e,int x,int y。然后,您可以在初始化按钮时将创建的新类作为参数传递。同样,我理解您试图做什么,但我认为您的方法不是@P.Soutzikevich已经指出的最佳方法,您可能需要更改尝试执行此操作的方式。我不会使用1D/2D数组。只需调用
yourMethod(buttonCoordinates)
,如果您不知道如何填充数组,则将数组作为参数传递:
buttonCoordinates[0]=y
buttonCoordinates[1]=x
。顺便问一句,为什么先有
y
,然后是
x
?这似乎是错误的。如果这不能解决您的问题,请发布一个适当的