代码之家  ›  专栏  ›  技术社区  ›  user5241092

网格布局不工作?

  •  1
  • user5241092  · 技术社区  · 10 年前

    我正在尝试制作一个2x2网格布局,左上角有一个JLabel,其他三个空间有三个按钮。当我这样做时,我得到了一个意外的结果:一个大按钮(填满了整个JDialog),上面写着“你想推我吗”。我不知道为什么会出现这个结果,请帮忙,谢谢!

        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 回复  |  直到 10 年前
        1
  •  2
  •   Lukas Rotter    10 年前

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

    改变

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

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

    此外,变量名为 label 是一个 按扭 ,你可能想改变这一点。

        2
  •  2
  •   camickr    10 年前

    不要向按钮添加组件。将构件添加到配电盘。

    因此,基本代码应为:

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

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