2015-03-24 28 views
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); 

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

回答

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

感谢您的帮助! – andstu 2015-03-24 22:17:27

+0

很高兴它可以帮助 – MadProgrammer 2015-03-24 23:08:51