吴志勇的博客 吴志勇的博客
  • h5

    • HTML5&CSS3
  • scss

    • css预处理语言
  • JavaScript

    • JavaScript教程
    • Ajax
    • ES6教程
    • NodeJS
    • Typescript
  • 框架

    • Jquery
    • VUE
    • React
  • Swing专题
  • java基础
  • javaweb
  • 框架
  • 数据库
  • netty
  • 设计模式
  • 微服务及架构
  • 云原生
  • maven
  • 单元测试
工具
我的
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

吴志勇

......
  • h5

    • HTML5&CSS3
  • scss

    • css预处理语言
  • JavaScript

    • JavaScript教程
    • Ajax
    • ES6教程
    • NodeJS
    • Typescript
  • 框架

    • Jquery
    • VUE
    • React
  • Swing专题
  • java基础
  • javaweb
  • 框架
  • 数据库
  • netty
  • 设计模式
  • 微服务及架构
  • 云原生
  • maven
  • 单元测试
工具
我的
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Swing专题

    • swing图形化界面简介

    • JavaSwing布局管理器

    • JavaSwing基本组件

    • JavaSwing面板组件

    • JavaSwing其他组件

    • JavaSwing相关特性

      • 组件的位置和尺寸
      • 组件边框(Border)
      • 事件处理
      • 多线程并发与线程安全
      • 拖拽功能
      • 闪屏(SplashScreen)
      • 系统托盘(SystemTray)
    • 扩展:JavaAWTSwing其他相关

  • java基础

  • javaweb

  • 框架

  • Maven
  • 单元测试
  • 动态代理
  • 数据库

  • netty

  • 设计模式

  • 微服务及架构

  • 云原生

  • Velocity模板引擎
  • 后端
  • Swing专题
  • JavaSwing相关特性
wuzhiyong
2024-09-18

组件边框(Border)

# 1. 概述

官方JavaDocsApi:

  • javax.swing.BorderFactory (opens new window)
  • javax.swing.border.Border (opens new window)

Border,边框。边框是对组件边界的装饰,例如为组件增加矩形有色边框,为透明的容器增加带标题的边框,增加组件的内边距,为组件增加浮雕化/凹凸斜面/阴影外观等,让组件看起来更美观。

组件边框的设置:

// 创建边框
Border border = BorderFactory.createXxxxBorder(...);
// 设置组件的边框
jComponent.setBorder(border);
1
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
  • (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
  • (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

# 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

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

← 组件的位置和尺寸 事件处理→

Copyright © 2020-2025 wuzhiyong
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式