• Swing-setBorder()用法-入门


    注:本文内容转自:Swing编程边框(Border)的用法总结。内容根据笔者理解稍有整理。

    函数说明:

    public void setBorder(Border border)

    设置此组件的边框。Border 对象负责定义组件的 insets(直接对组件重写所有 insets 设置),并且可选地呈现这些 insets 范围内的边框装饰。要为 swing 组件创建有装饰的和无装饰的区域(例如边距和填充),应该使用边框(而不是 insets)。在单个组件中可使用复合边框来嵌套多个边框。 虽然从技术上讲可以在继承自 JComponent 的所有对象上设置边框,但是很多标准 Swing 组件的外观实现无法正常地使用用户设置的边框。通常,如果希望在标准的 Swing 组件而不是 JPanel 或 JLabel 上设置边框时,建议将组件放入 JPanel 中,并在 JPanel 上设置边框。

    Border对象的定义主要通过BorderFactory进行,这也是本文讨论的重点,根据API的解释:BorderFactory提供标准Border对象的工厂类。在任何可能的地方,此工厂类都将提供对已共享Border实例的引用。下面讨论具体的应用方法:

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import javax.swing.*;
    import javax.swing.border.Border;
    import javax.swing.border.TitledBorder;
    
    
    public class setBorderDemo {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            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);
            
            JFrame frame = new JFrame("Swing边框演示");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.getContentPane().add(panel);
            frame.pack();
            frame.setVisible(true);
        }
    }

    运行效果如下图所示:

    运行效果图

    需注意的是,panel与frame之间其实是有一个宽度为5像素的emptyBorder,它只占空间而不显示。

  • 相关阅读:
    mysql总结
    git总结
    转:如何判断一家公司的好坏
    路越走越窄,尤其做技术的
    百度面试总结
    背叛
    which和whereis 命令
    bzoj3263 陌上花开 CDQ模板
    bzoj 2653middle
    暑假第十九测
  • 原文地址:https://www.cnblogs.com/pzy4447/p/4573140.html
Copyright © 2020-2023  润新知