Swing客户端程序中的控件调用setBorder可以设置边框,setBorder是JComponent类的成员方法,其函数原型如下:
public void setBorder(Border border)
参数:
border - 要为此组件呈现的边框
对参数Border对象的定义主要通过BorderFactory进行,这也是本文讨论的重点,根据API的解释:BorderFactory提供标准 Border 对象的工厂类。在任何可能的地方,此工厂类都将提供对已共享 Border 实例的引用。下面讨论具体的应用方法:
BorderFactory提供了以下方法:
static Border
creatBevelBorder(int type)建立一个立体的边界,并由参数type指定为凹陷或突起,type可为BevelBorder.LOWERED表示凹陷,或是BevelBorder.RAISED表示突起。
static Border
createBevelBorder(int type,Color highlight,Color shadow)建立一个立体的边界,并指定突边与阴影的颜色。
static Border
createBevelBorder(int type,Color highlightOuter,Color highlightInner,Color shadowOuter,Color shadowInner)建立一个立体的边界,并指定内外部的突边与阴影的颜色。
static CompoundBorder
createCompoundBorder()建立一个复合边界。
static CompoundBorder
createCompoundBorder(Border outsideBorder,Border insideBorder)建立一个复合边界,并指定它 的内外边界。
static Border
createEmptyBorder()建立一个空的边界。
static Border
createEmptyBorder(int top,int left,int bottom,int right)建立一个空的边界,并指定上下左右 的宽度,在这些宽度中不能作绘图的效果。
static Border
createEtchedBorder()建立一个四周有凹痕的边界。
static Border
createEtchedBorder(Color highlight,Color shadow)建立一个四周有凹痕的边界,并指定突边与阴影 的颜色。
static Border
createLineBorder(Color color) 建立一个线务边界,并指定线条的颜色。
static Border
createLineBorder(Color color,int thicness) 建立一个线务边界,并指定线条的颜色与宽度。
static Border
createLoweredBevelBorder()建立一个具有凹陷效果的边界,意义与 createBevelBorder(BevelBorder.LOWERED)相同。
static MatteBorder
createMatteBorder(int top,int left,int bottom,int right,Color color)建立一个垫子边界,这跟 createEmptyBorder有点像,但可以指定边界颜色。
static MatteBorder
createMatteBorder(int top,int left,int bottom,int right,Icon tileIcom)建立一个垫子边界,并 指定边界的花纹。
static Border
createRaisedBevelBorder()建立一个具有突起效果的边界,意义与createBevelBorder(BevelBorder. RAISED)相同。
static TitledBorder
createTitledBorder(Border border)建立一个标题边界,但没有标题名称。
static TitledBorder
createTitledBorder(Border border,String title)建立一个标题边界,并指定标题名称,标题默认位 置是TitledBorder.DEFAULT_JUSTIFICATION与TitledBorder.DEFAULT_POSITION,也就是左上方。
static TitledBorder
createTitledBorder(Border border,String title,int titleJustification,int titlePosition) 建立一个标题边界,并指定标题名称与标题位置,
参数titleJustification可为:
TitledBorder.LEFT
TitledBorder.CENTER
TitledBorder.RIGHT
TitledBorder.DEFAULT_JUSTIFICATION(leading)
参数titlePosition可为:
TitedBorder.ABOVE_TOP
TitledBorder.TOP(sittin on the top line)
TitledBorder.BELOW_TOP
TitledBorder.ABOVE_BOTTOM
TitledBorder.BOTTOM(sitting on the bottom line)
TitledBorder.BELOW_BOTTOM
TitledBorder.DEFAULT_POSITION(top)
static TitledBorder
createTitledBorder(Border border,String title,int titleJustification,int titlePosition,Font titleFont)建立一个标题边界,并指定标题名称,标题位置与字体。
static TitledBorder
createTitledBorder(Border border,String title,int titleJustification,int titlePosition,Font titleFont,Color titleColor)建立一个标题边界,并指定标题名称,标题位置、字体与标题颜
JAVA示例:
package Test;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
public class BorderDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Swing边框演示-宋小生");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 2, 5, 10));
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
JButton p1 = new JButton();
p1.setBorder(BorderFactory.createLineBorder(Color.red, 3));
p1.add(new JLabel("线边框"));
panel.add(p1);
JPanel p2 = new JPanel();
p2.setBorder(BorderFactory.createEtchedBorder());
p2.add(new JLabel("蚀刻边框"));
panel.add(p2);
JPanel p3 = new JPanel();
p3.setBorder(BorderFactory.createRaisedBevelBorder());
p3.add(new JLabel("斜面边框(凸)"));
panel.add(p3);
JPanel p4 = new JPanel();
p4.setBorder(BorderFactory.createLoweredBevelBorder());
p4.add(new JLabel("斜面边框(凹)"));
panel.add(p4);
JPanel p5 = new JPanel();
p5.setBorder(BorderFactory.createTitledBorder("标题"));
p5.add(new JLabel("标题边框"));
panel.add(p5);
JPanel p6 = new JPanel();
TitledBorder tb = BorderFactory.createTitledBorder("标题");
tb.setTitleJustification(TitledBorder.RIGHT);
p6.setBorder(tb);
p6.add(new JLabel("标签边框(右)"));
panel.add(p6);
JPanel p7 = new JPanel();
p7.setBorder(BorderFactory.createMatteBorder(1, 5, 1, 1, Color.yellow));
p7.add(new JLabel("花色边框"));
panel.add(p7);
JPanel p8 = new JPanel();
Border b1 = BorderFactory.createLineBorder(Color.blue, 2);
Border b2 = BorderFactory.createEtchedBorder();
p8.setBorder(BorderFactory.createCompoundBorder(b1, b2));
p8.add(new JLabel("组合边框"));
panel.add(p8);
JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setPreferredSize(new Dimension(300, 300));
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
效果: