网格布局不起作用?

Grid layout not working?

我正在尝试制作一个 2x2 网格布局,在左上角有一个 JLabel,在其他三个空间上有三个按钮。当我这样做时,我得到了一个大按钮(填满整个 JDialog)的意外结果,上面写着 "Do you want to push me"。不知道为什么会出现这个结果,求助,谢谢!

    public void sinceyoupressedthecoolbutton() {

        JDialog replacementwindow = new JDialog(); //Like a window
        JButton best = new JButton("best");
        JButton first = new JButton("FIRST");
        JButton second = new JButton("Second");
        replacementwindow.setLayout(new GridLayout(2,3,0,0)); //Row, column, distance horizontally, distance vertical
        JPanel panel = new JPanel();
        replacementwindow.add(panel); //adding the JPanel itself
        replacementwindow.add(first);
        replacementwindow.add(second);
        replacementwindow.add(best);
        replacementwindow.setSize(500, 500);
        replacementwindow.setTitle("NEW WINDOW!");
        replacementwindow.setVisible(true);

    }

不要向按钮添加组件。您将组件添加到面板。

所以基本代码应该是:

JDialog dialog = new JDialog(...);
JPanel panel = new JPanel( new GridLayout(...) );
panel.add(label);
panel.add(button1);
...
dialog.add(panel);

另外,变量名不能以大写字符开头! "Yes" 不遵循 Java 标准。其他变量做。保持一致!

这是因为您设置了 JButton 的布局,而不是 JDialog

的布局

改变

label.setLayout(new GridLayout(2,2,0,0));

YES.setLayout(new GridLayout(2,2,0,0));

另外,你的变量 label 是一个 JButton,你可能想改变它。