Java Swing之Layout Components

Swing除了可以使用绝对位置来定义布局之外,更常见的是使用J2SE平台提供的各种Layout Managers。(GroupLayout是针对辅助布局工具的,比如NetBeans,通过代码的形式是不会用到GroupLayout的,更有用的是GridBagLayout,它是最灵活和强大的Layout Manager)。

主要的有8种:

1.BorderLayout  

默认的content panes使用的Layout Manager。分为上,下,左,右,中 5个部分,通常来说,container只会使用到BorderLayout的其中1个或者2个部分,要么只是中间部分,要么就是中间以及下面。

如果你想将某个JComponent添加到具体的某个位置,那么在添加的时候直接在add方法中指定就可以,比如container.add(button, BorderLayout.PAGE_START)。

BorderLayout提供了设置gap的方法,如果想要设置的话,可以很方便的调用

2.BoxLayout  

它的外观就是一行或者一列一个挨着一个的布局。凡是哪种上下排列的,左右排列的,都可以使用它。

3.CardLayout  

当你想要使用重复利用同一个空间的时候,需要CardLayout。使用combox或者tabs来切换,没切换一次,其对应的空间不变,但是空间里面的内容会根据你选择的tab或者combox的具体元素进行改变。有点像浏览器的tab切换。

4.FlowLayout  

所有的元素会被放置成一行,如果container空间不够的话,就会自动分行。如果元素加起来的宽度小于container的空间,就会自动被放置在中心位置。

可以使用类的方法来指定元素的横向和纵向的padding。

5.GridBagLayout  

这个是最灵活,也是最复杂的布局方式。将container的空间分割成为多个小格子。通过定义一个GridBagConstraints对象,然后在每次添加一个控件之前对该对象进行设置,从而达到想要的布局效果。

GridBagConstraints有一些重要的参数如下:

gridx,gridy --- 指定在横竖两个方向的第几个cell,0代表第一个cell。两个参数一起可以确定所要添加的组件的起始位置

gridwidth,gridheight --- 指定在横竖两个方向各占几个cell的位置

fill --- 当


6.GridLayout 

顾名思义,就是将container的空间分成格子,格子的大小一致。如果空间变小,那么格子的尺寸也会变小。定义GridLayout的时候可以说明要多少行,多少列,也可以只是指定其中一个,另一个为0,那么另一个就是没有限制的,根据元素的多寡自动进行分配。

同样,该类也提供方法,帮助你指定2个格子之间的横向和纵向法gap。

7.GroupLayout  

8.SpringLayout





你可能感兴趣的:(JAVA,SE)