• P38 Border边框


    系统:Win10
    Java:1.8.0_333
    IDEA:2020.3.4
    Gitee:https://gitee.com/lijinjiang01/JavaSwing

    1.概述

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

    // 创建边框
    Border border = BorderFactory.createXxxxBorder(...);
    // 设置组件的边框
    component.setBorder(border);
    
    • 1
    • 2
    • 3
    • 4

    创建组件边框,使用 BorderFactory 工厂类中的静态方法窗口,支持许多各种不同形式的边框。

    2.边框的创建

    常用边框的创建(BorderFactory 中的静态方法)

    2.1 空边框

    // 创建一个不占用空间的空边控(边界宽度均为0)
    static Border createEmptyBorder();
    
    // 创建一个占用空间但不绘制的空边框,指定四条边占用的宽度(内边距效果)
    static Border createEmptyBorder(int top, int left, int bottom, int right);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.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 标题边框

    /**
     * 参数说明:
     *     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.4 其他边框

    // 斜面边框
    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.代码实例

    import com.lijinjiang.beautyeye.BeautyEyeLNFHelper;
    import javax.swing.*;
    import javax.swing.border.Border;
    import javax.swing.border.TitledBorder;
    import java.awt.*;
    
    public class Demo01 {
        public static void main(String[] args) {
            try {
                BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.generalNoTranslucencyShadow;
                BeautyEyeLNFHelper.launchBeautyEyeLNF();
            } catch (Exception e) {
                e.printStackTrace();
            }
            JFrame frame = new JFrame("Demo01");
    
            JPanel contentPane = new JPanel();
            contentPane.setLayout(new GridLayout(2, 4, 25, 25));
    
            JPanel panel1 = new JPanel();
            panel1.setBorder(BorderFactory.createLineBorder(Color.RED, 3));
            panel1.add(new JLabel("线边框"));
            contentPane.add(panel1);
    
            JPanel panel2 = new JPanel();
            panel2.setBorder(BorderFactory.createEtchedBorder());
            panel2.add(new JLabel("刻蚀边框"));
            contentPane.add(panel2);
    
            JPanel panel3 = new JPanel();
            panel3.setBorder(BorderFactory.createRaisedBevelBorder());
            panel3.add(new JLabel("斜面边框(凸)"));
            contentPane.add(panel3);
    
            JPanel panel4 = new JPanel();
            panel4.setBorder(BorderFactory.createLoweredBevelBorder());
            panel4.add(new JLabel("斜面边框(凹)"));
            contentPane.add(panel4);
    
            JPanel panel5 = new JPanel();
            panel5.setBorder(BorderFactory.createTitledBorder("标题"));
            panel5.add(new JLabel("标题边框"));
            contentPane.add(panel5);
    
            JPanel panel6 = new JPanel();
            TitledBorder rightTitle = BorderFactory.createTitledBorder("标题");
            rightTitle.setTitleJustification(TitledBorder.RIGHT);
            panel6.setBorder(rightTitle);
            panel6.add(new JLabel("标题边框(右)"));
            contentPane.add(panel6);
    
            JPanel panel7 = new JPanel();
            panel7.setBorder(BorderFactory.createMatteBorder(2, 15, 2, 2, Color.ORANGE));
            panel7.add(new JLabel("花色边框"));
            contentPane.add(panel7);
    
            JPanel panel8 = new JPanel();
            Border border1 = BorderFactory.createLineBorder(Color.GREEN, 3);
            Border border2 = BorderFactory.createTitledBorder("标题");
            panel8.setBorder(BorderFactory.createCompoundBorder(border1, border2));
            panel8.add(new JLabel("组合边框"));
            contentPane.add(panel8);
    
            frame.setContentPane(contentPane);
            frame.setSize(760, 400);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    }
    
    • 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
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    4.效果演示

    在这里插入图片描述

  • 相关阅读:
    V3s 屏幕LCD驱动总结
    ubuntu20.04使用kubeadm安装kubernetes1.24.4
    人货场协同作战,新零售社交电商如何打造无敌商业模式?
    实战Netty!基于私有协议,怎样快速开发网络通信服务?
    About 11.13 This Week
    Spark rdd之mappartition妙用
    VR全景广告——实体商家的营销新选择
    centos-7安装mysql-8
    G1D4-软考中级《项目集成管理》-下午真题
    【Java基础】类型转换与常用运算符
  • 原文地址:https://blog.csdn.net/qq_35132089/article/details/126900492