对于 Java Swing,如何访问 (x,y) 处的元素?

For Java Swing, how can I access the element at (x,y)?

假设声明的网格布局:

import java.awt.*;
import javax.swing.*;
import javax.swing.border.Border;

public class Main extends JFrame{
    public static void main(String args[]) {
        JFrame window = new JFrame();
        JButton[] b = new JButton[9];
        
        for(int i = 0; i < 9; i++) {
            b[i] = new JButton("Button " + i);
            window.add(b[i]);
        }
        
        window.setLayout(new GridLayout(3, 3));
        window.setVisible(true);
        window.setSize(300, 300);
        
    }
}

有没有办法访问 (x,y) 处网格中的元素(在本例中为按钮)?例如:我想访问 window(1,2) 以便获得按钮 5.

I want to access window(1,2) so that it would get Button 5.

做一些基础数学。

您将网格定义为具有 3 列。

所以你的按钮的索引是:

int index = (row * columns) + column;
JButton button = b[index];

其中行 = 1,列 = 2

另外:

for(int i = 0; i < 9; i++) {
    b[i] = new JButton("Button " + i);
    window.add(b[i]);
}
    
window.setLayout(new GridLayout(3, 3));
  1. 您应该在向面板添加组件之前设置布局。
  2. 您应该使用 new GridLayout(0, 3) 来指定您想要在第 3 列之后换行。也就是说,无论您向网格添加多少个组件,都会在 3 个组件之后换行