0

我对 Java GUI 编程比较陌生,我想使用网格布局并在该网格布局中放置一个容器。我不太确定该怎么做,但这是我尝试过的,但没有奏效:

    Container pane = getContentPane();
    pane.setLayout(new GridLayout(3, 1));
    Container inp = getContentPane();
    inp.setLayout(new GridLayout(2, 4));
    Container out = getContentPane();
    out.setLayout(new GridLayout(1, 1));
    Container bottom = getContentPane();
    bottom.setLayout(new GridLayout(1, 2));

    pane.add(inp);
    pane.add(out);
    pane.add(bottom);

    inp.add(cn1);
    inp.add(cnum1);
    inp.add(cn2);
    inp.add(cnum2);
    inp.add(add);
    inp.add(sub);
    inp.add(mul);
    inp.add(div);

    out.add(ans);

    bottom.add(clear);
    bottom.add(exit);

    pane.add(inp);
    pane.add(out);
    pane.add(bottom);

我知道这是错误的,但我希望有人能帮助我。谢谢!

4

1 回答 1

0

你所有的面板都是一样的,它们引用了 contentPane。一个组件只能驻留在一个容器中,因此每次您将任何面板添加到另一个容器时,它们都会首先从父容器中删除。

话虽如此,您应该有一个异常说明容器不能添加到自身。

相反,你需要做一些更像...

Container pane = getContentPane();
pane.setLayout(new GridLayout(3, 1));
Container inp = new JPanel(new GridLayout(2, 4));
Container out = new JPanel(new GridLayout(1, 1));
Container bottom = new JPanel(new GridLayout(1, 2));
于 2015-03-24T21:56:38.720 回答