2016-05-23 319 views
0

我使用java swing 我试过witj一些布局,但他们did''work。 我有一个mainpanel,其中包含一些面板,或者向右或向左移动 ,其中一个显示在下面。将JPanel添加到JPanel的右侧或左侧

有人知道该怎么办? 感谢所有

enter image description here

+0

网格或网格包布局...网格:所有单元具有相同的维度,一个单元中有一个孩子,每个单元最多有一个孩子。网格包:稍微复杂一些。使用网格2x2,其中一个面板在(1,0),另一个在(0,1)。 –

+0

但窗格的数量未定义,它们可以是14或100 –

+0

然后在知道窗格数量时相应地创建一个网格布局,问题是什么? –

回答

3

这是一个聊天应用程序,

如果你只是显示在面板的文字,你也许能够使用的JTextPane用左/右对齐文本如下所示:Java Swing JTextArea write both left and right

或者您希望使用带有每列一个组件的GridBagLayout。然后您需要使用:

  1. fill对每个组件的约束,以便填充行中可用的宽度。
  2. 然后对于每个组件,您将使用anchor约束,以便该组件位于LINE_STARTLINE_END上。

阅读关于Using a GridBagLayout的Swing教程的部分,了解关于这些约束的更多信息。

或者,您可以使用Relative Layout,这也允许面板的垂直布局。在这种情况下,代码将如下所示:

RelativeLayout rl = new RelativeLayout(RelativeLayout.Y_AXIS); 
rl.setFill(true); 
setLayout(rl); 

JPanel left = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
left.add(new JLabel("left")); 
add(left); 

JPanel right = new JPanel(new FlowLayout(FlowLayout.RIGHT)); 
right.add(new JLabel("right")); 
add(right); 

所以您只需要管理每个面板的FlowLayout对齐。