将容器放在网格布局中

时间:2015-03-24 21:48:20

标签: java user-interface gridlayoutmanager

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

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

1 个答案:

答案 0 :(得分:0)

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

话虽如此,您应该有一个例外,说明无法将容器添加到自身。

相反,你需要做更像......的事情。

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