网格布局不起作用?

时间:2015-08-19 22:02:29

标签: java swing jbutton layout-manager grid-layout

我正在尝试制作一个2x2网格布局,左上角有一个JLabel,另外三个空格上有三个按钮。当我这样做的时候,我得到一个大按钮(填满整个JDialog)的意外结果,说明了#34;你想推我和#34;。我不知道为什么会出现这个结果,请帮助,谢谢!

    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);

    }

2 个答案:

答案 0 :(得分:2)

不要向按钮添加组件。您可以向面板添加组件。

所以基本代码应该是:

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

此外,变量名称不应以大写字母开头! “是”不符合Java标准。其他变量呢。保持一致!

答案 1 :(得分:2)

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

的布局

更改

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

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

另外,名为label的变量是JButton,您可能想要更改它。