12.2.3 为组件设置边框
12.2.3 为组件设置边框
可以调用JComponent
提供的setBorder(Border b)
方法为Swing
组件设置边框,其中Border
是Swing
提供的一个接口,用于代表组件的边框。该接口有数量众多的实现类,如LineBorder
、MatteBorder
、BevelBorder
等,这些Border
实现类都提供了相应的构造器用于创建Border
对象,一旦获取了Border
对象之后,就可以调用JComponent
的setBorder(Border b)
方法为指定组件设置边框。
TitledBorder
和CompoundBorder
比较独特,其中TitledBorder
的作用并不是为其他组件添加边框,而是为其他边框设置标题,当创建TitledBorder
对象时,需要传入一个已经存在的Border
对象,新创建的TitledBorder
对象会为原有的Border
对象添加标题;而CompoundBorder
用于组合两个边框,因此创建CompoundBorder
对象时需要传入两个Border
对象,一个用作组件的内边框,一个用作组件的外边框。
除此之外,Swing
还提供了一个BorderFactory
静态工厂类,该类提供了大量的静态工厂方法用于返回Border
实例,这些静态方法的参数与各Border
实现类的构造器参数基本一致。
Border
不仅提供了上面所提到的一些Border
实现类,还提供了 MetalBorders.ToolBarBorder
、MetalBorders.TextFieldBorder
等Border
实现类,这些实现类用作Swing
组件的默认边框,程序中通常无须使用这些系统边框。
为Swing
组件添加边框可按如下步骤进行:
- 使用
BorderFactory
或者XxxBorder
创建XxxBorder
实例。 - 调用
Swing
组件的setBorder(Border b)
方法为该组件设置边框
图12.5显示了系统可用边框之间的继承层次
程序 为Panel容器添加边框
下面的例子程序示范了为Panel
容器分别添加如图12.5所示的几种边框。
1 | import javax.swing.*; |
运行上面程序,会看到如图12.6所示的效果。