2012-12-02 37 views
0

您好,请参阅附件图像,我编写的接口有三个JPanel,我使用的是GridBagLayout,我已经阅读了一些很好的教程并获得了一些理解,但我需要您的指导2 JPanels像给定的图片一样并排。GridBagLayout中有1个以上的JPanel

例如,如果我这样做frame.add(leftpanel);再有就是在JFrame中只有一个面板..如何对齐留在JFrame的一半,这样,当我做frame.add(panelright);它被添加到正确的SID,

请指导我做的PIC中显示的功能,enter image description here

我能处理1个JPanel并所有的组件,但不知道紧靠处理大于1,

+0

*“将它左对齐JFrame的一半”* ***准确地说是***一半?如果是这样,左/右面板将需要一个'GridLayout'。然后,您可以将该面板放置在BorderLayout的'CENTER'中,底部放在'PAGE_END'中。 –

回答

3

我觉得你的情况BorderLayout将更加有用。尝试阅读关于它here

在这种情况下,您可以将面板在东南偏南或中心处添加,比GridBag好得多。

+0

以及如果我必须在每个JPanel中添加5-6个组件,这对我来说并不那么容易,并且在GridBagLayout中很容易,请指导我添加2个JPandles或反馈任何资源,因为我无法找到它(对于两个JPanel) –

+0

是的,您可以通过在中心或其他侧面布局中添加另一个边界布局来实现。 – Fyre

2

您需要使用GridBagConstraints指定位置和其他设置。 例如,你可以做这样的事情:

GridBagConstraints constraints = new GridBagConstraints(); 
constraints.gridx = 0; 
constraints.gridy = 0; 
constraints.fill = GridBagConstraints.BOTH; 

frame.add(leftPanel, constraints); 
constraints.gridx = 1; 
frame.add(panelright, constraints); 

constraints.gridx = 0; 
constraints.gridy = 1; 
constraints.gridwidth = 2; 
frame.add(bottomPanel, constraints); 

GridBagConstraints.gridx和GridBagConstraints.gridy确定该元素的行和列。填充告诉布局在水平和垂直方向上使用所有可用空间。 如果你想设置一个单元格将使用相对于其他单元格具有一定比例的空间,则可以使用weightx和weighty字段。

+0

frame.add(leftPanel,constraints);它会生成错误panel1.add(buttton1,constraints);这个工作,但方式相同 –

+0

我修复了代码中的一些错误。它产生了什么错误?我假设你使用GridBagLayout将JFrame的contentPane设置为JPanel,对吧? –

2

还考虑两个JSplitPane实例。最外面的窗格在顶部和底部之间将具有VERTICAL_SPLIT。外部窗格的顶部将包含另一个JSplitPane,在左侧和右侧之间具有HORIZONTAL_SPLIT

相关问题