2012-10-31 54 views
1

在我的应用程序中,有4个面板。我需要将它们插入主面板,该面板使用BorderLayout。这4个面板是...使用BorderLayout将4个内嵌组件添加到JPanel中

  1. 一个薄的图像条。
  2. 正上方下方的4个按钮
  3. 覆盖整个页面的TextField。
  4. 大约在最后。

这是我的代码...

add(imageLabel, BorderLayout.NORTH); 
    add(buttonPanel,BorderLayout.PAGE_START); 
    add(logScrollPane, BorderLayout.CENTER); 
    add(about, BorderLayout.PAGE_END); 

当我做到这一点,buttonPanel消失。我怎样才能达到我需要的?

+0

使用BoxLayout? – StanislavL

回答

6

我平时尽量最大3种成分的保持任何BorderLayout,所以我会做这样的......

JPanel outerPanel = new JPanel(new BorderLayout()); 
JPanel innerPanel= new JPanel(new BorderLayout()); 

innerPanel.add(buttonPanel,BorderLayout.NORTH); 
innerPanel.add(logScrollPane, BorderLayout.CENTER); 
innerPanel.add(about, BorderLayout.SOUTH); 

outerPanel.add(imageLabel, BorderLayout.NORTH); 
outerPanel.add(innerPanel,BorderLayout.CENTER); 

只要你保持“最大拉伸”组件在CENTER (在这种情况下,您的logScrollPane),那么它将始终工作。如果您想使用面板,例如将其设置在JFrame上,则只需使用add(outerPanel)即可。

不要害怕BorderLayout - 这种布局能够自动扩展CENTER组件以填充可用空间使其成为非常强大和非常重要的LayoutManager

+0

谢谢:)。 Swing确实会造成损失。应该有一个mvc框架来快速进行应用。 Netbeans GUI仍然是一个主要帮助 – Jatin

+0

@Jatin:另请参阅本[MVC大纲](http://stackoverflow.com/a/2687871/230513)和[示例](http://stackoverflow.com/a/3072979/ 230513)。 – trashgod