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