组件边框(Border)
# 1. 概述
官方JavaDocsApi:
Border,边框。边框是对组件边界的装饰,例如为组件增加矩形有色边框,为透明的容器增加带标题的边框,增加组件的内边距,为组件增加浮雕化/凹凸斜面/阴影外观等,让组件看起来更美观。
组件边框的设置:
// 创建边框
Border border = BorderFactory.createXxxxBorder(...);
// 设置组件的边框
jComponent.setBorder(border);
1
2
3
4
2
3
4
创建组件边框,使用 BorderFactory 工厂类中的静态方法窗口,支持许多各种不同形式的边框。
# 2. 边框的创建
常用边框的创建(
BorderFactory中的静态方法):
(1)空边框
// 创建一个不占用空间的空边控(边界宽度均为0) static Border createEmptyBorder(); // 创建一个占用空间但不绘制的空边框,指定四条边占用的宽度(内边距效果) static Border createEmptyBorder(int top, int left, int bottom, int right);1
2
3
4
5(2)线边框
/**
* 参数说明:
* color: 线条颜色
* thickness: 线宽(默认为1px)
* rounded: 是否有圆角
*/
static Border createLineBorder(Color color);
static Border createLineBorder(Color color, int thickness);
static Border createLineBorder(Color color, int thickness, boolean rounded);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
- (3)标题边框
/**
* 参数说明:
* border: 在此边框基础上添加标题,可以传 null
*
* title: 需要添加的标题
*
* titleJustification: 标题对齐方式,该值为一下之一:
* TitledBorder.LEFT
* TitledBorder.CENTER
* TitledBorder.RIGHT
* TitledBorder.LEADING
* TitledBorder.TRAILING
* TitledBorder.DEFAULT_JUSTIFICATION (leading)
*
* titlePosition: 标题显示的位置(相对于边框的纵向位置),该值为一下之一:
* TitledBorder.ABOVE_TOP
* TitledBorder.TOP(位于顶线上)
* TitledBorder.BELOW_TOP
* TitledBorder.ABOVE_BOTTOM
* TitledBorder.BOTTOM(位于底线上)
* TitledBorder.BELOW_BOTTOM
* TitledBorder.DEFAULT_POSITION(顶部)
*
* titleFont: 标题的字体
*
* titleColor: 标题的颜色
*/
static TitledBorder createTitledBorder(String title);
static TitledBorder createTitledBorder(Border border);
static TitledBorder createTitledBorder(Border border, String title);
static TitledBorder createTitledBorder(Border border, String title, int titleJustification, int titlePosition);
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);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
- (4)其他边框(具体参数列表见 DocsApi)
// 斜面边框
static Border createBevelBorder(...);
// 虚线边框
static Border createDashedBorder(...);
// “浮雕化”边框
static Border createEtchedBorder(...);
// 凹入斜面边缘的边框
static Border createLoweredBevelBorder(...);
// 具有凸出斜面边缘的边框
static Border createRaisedBevelBorder(...);
// 凸起软斜面
static Border createRaisedSoftBevelBorder(...);
// 合成边框
static CompoundBorder createCompoundBorder(...);
// 类似衬边的边框
static MatteBorder createMatteBorder(...);
// 共享斜面边框
static Border createSharedBevel(...)
// 软斜面边框
static Border createSoftBevelBorder(...);
// 画笔边框
static Border createStrokeBorder(...);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 3. 代码实例
package com.xiets.swing;
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame jf = new JFrame("测试窗口");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setSize(400, 400);
jf.setLocationRelativeTo(null);
JPanel panel = new JPanel();
JPanel panel01 = createPanel();
panel01.setBorder(BorderFactory.createLineBorder(Color.RED)); // 线边框
JPanel panel02 = createPanel();
panel02.setBorder(BorderFactory.createTitledBorder("边框标题XXX")); // 标题边框
JPanel panel03 = createPanel();
panel03.setBorder(BorderFactory.createRaisedSoftBevelBorder()); // 凸起软斜面
JPanel panel04 = createPanel();
panel04.setBorder(BorderFactory.createLoweredBevelBorder()); // 凹入斜面
panel.add(panel01);
panel.add(panel02);
panel.add(panel03);
panel.add(panel04);
jf.setContentPane(panel);
jf.setVisible(true);
}
private static JPanel createPanel() {
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(180, 180));
panel.add(new JLabel("一个标签"));
panel.add(new JButton("一个按钮"));
panel.add(new JRadioButton("单选按钮"));
panel.add(new JCheckBox("复选框"));
return panel;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

上次更新: 2024-09-19 12:17:39