Java JButton应该如何跟踪其在GridLayout中的位置?

Java JButton应该如何跟踪其在GridLayout中的位置?,java,swing,jbutton,grid-layout,Java,Swing,Jbutton,Grid Layout,我有一个名为cell的类,它扩展了JButton。然后在gridlayout中有16个JButton(4,4,3,3)。是否可以让每个单元格跟踪其在gridlayout中的位置(我需要知道一个单击的JButton是否靠近另一个特定的JButton)。您只需创建一个类,扩展JButton,并为网格中的位置添加两个字段即可。创建一个为这些字段赋值的新构造函数(或setter)和两个将返回这些字段的简单getter 例如: class MyJButton extends JButton {

我有一个名为cell的类,它扩展了JButton。然后在gridlayout中有16个JButton(4,4,3,3)。是否可以让每个单元格跟踪其在gridlayout中的位置(我需要知道一个单击的JButton是否靠近另一个特定的JButton)。

您只需创建一个类,扩展JButton,并为网格中的位置添加两个字段即可。创建一个为这些字段赋值的新构造函数(或setter)和两个将返回这些字段的简单getter

例如:

class MyJButton extends JButton {

    private int gridx;
    private int gridy;

    public MyJButton(String label, int gridx, int gridy) {
        super(label);
        this.gridx = gridx;
        this.gridy = gridy;
    }

    public int getGridx() {
        return gridx;
    }

    public int getGridy() {
        return gridy;
    }
}
您可以在构建GUI时分配这些
gridx
gridy
值。例如,以下创建了16个按钮,标记了它们在网格中的位置:

for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
        MyJButton btn = new MyJButton(i + "," + j, i, j);
        //Configure your button here...
        panel.add(btn);
    }
}
for(int i=0;i<4;i++){
对于(int j=0;j<4;j++){
MyJButton btn=新的MyJButton(i+“,”+j,i,j);
//在此处配置您的按钮。。。
面板。添加(btn);
}
}
我将它们存储在一个列表中,但问题是,(这个按钮和 gridlaoyout是一款幻灯片益智游戏)我无法向左移动按钮 在它第一次被移动后,我想我会 尝试另一种方法,让每个按钮都跟踪其位置

  • 使用

  • 从添加的ActionListener更改

  • 我将使用
    JToggleButton
    ItemListener
    进行益智游戏


这些是什么类型的按钮?它们是基于数组的按钮吗?原因您可以根据按钮的阵列位置计算按钮在网格布局中的位置。或者,您可以创建自定义按钮,以便在16个按钮不在任何数组中的情况下,它们在其中存储位置。我这样做了,我将它们存储在列表中,但问题是,(此按钮和GridLayout是一个幻灯片益智游戏)第一次移动按钮后,我无法将其移动到左下角,所以我想我应该尝试另一种方法,让每个按钮跟踪其位置如何从创建gridlayout的主类中分配它们的gridx和gridy位置?而不是您!这确实帮了我的忙problem@user3079108:另请参阅此相关内容。谢谢大家的帮助!