zoukankan      html  css  js  c++  java
  • 嵌套的标题边框

    标题边框可以与其他边框对象嵌套使用,默认的标题边框可以被嵌套的边框取代,但是标题文字部分依然会显示在正确的位置上。本实例通过该原理实现了标题边框与其他边框的嵌套效果,实例运行效果如图所示,界面中显示了3种嵌套边框效果。

    本实例的核心技术在于如何创建标题边框对象。实例中演示的3种边框使用了TitledBorder类的复杂构造方法

    1)在项目中新建窗体类ShowTitleBorder。设置窗体的标题、大小和位置等属性。

    2)在窗体类的构造方法中创建3个面板容器,同时创建3个标题边框对象,这3个标题边框分别与立体边框、浮雕化边框和线性边框进行嵌套,然后把嵌套后的边框设置为每个面板容器的边框属性。代码如下:

    package com.lzw;
    
    import java.awt.Color;
    import java.awt.EventQueue;
    import java.awt.GridLayout;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.EtchedBorder;
    import javax.swing.border.LineBorder;
    import javax.swing.border.TitledBorder;
    import javax.swing.UIManager;
    
    public class ShowInTitleBorder extends JFrame {
        
        private JPanel contentPane;
        private TitledBorder titledBorder;
        
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
            try {
                UIManager
                        .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
            } catch (Throwable e) {
                e.printStackTrace();
            }
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        ShowInTitleBorder frame = new ShowInTitleBorder();
                        frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        
        /**
         * Create the frame.
         */
        public ShowInTitleBorder() {
            setTitle("u5B9Eu4F8B008  u5D4Cu5957u7684u6807u9898u8FB9u6846");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 450, 176);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            GridLayout gl_contentPane = new GridLayout(0, 3);
            gl_contentPane.setHgap(10);
            contentPane.setLayout(gl_contentPane);
            setContentPane(contentPane);
            
            JPanel panel_9 = new JPanel();// 创建面板容器
            titledBorder = new TitledBorder(new BevelBorder(BevelBorder.LOWERED,
                    null, null, null, null), "嵌入立体边框的标题", TitledBorder.LEADING,
                    TitledBorder.TOP, null, new Color(59, 59, 59));// 创建嵌套立体效果的标题边框
            panel_9.setBorder(titledBorder);// 设置面板容器边框
            contentPane.add(panel_9);
            
            JPanel panel_10 = new JPanel();// 创建面板容器
            titledBorder = new TitledBorder(new EtchedBorder(EtchedBorder.RAISED,
                    null, null), "浮雕化标题边框", TitledBorder.LEADING, TitledBorder.TOP,
                    null, new Color(59, 59, 59));// 创建嵌套浮雕化效果的标题边框
            panel_10.setBorder(titledBorder);// 设置面板容器边框
            contentPane.add(panel_10);
            
            JPanel panel_11 = new JPanel();// 创建面板容器
            titledBorder = new TitledBorder(new LineBorder(new Color(255, 0, 255),
                    5, true), "粉线蓝字的线性标题框", TitledBorder.LEADING, TitledBorder.TOP,
                    null, Color.BLUE);// 创建嵌套直线效果的标题边框
            panel_11.setBorder(titledBorder);// 设置面板容器边框
            contentPane.add(panel_11);
            
        }
        
    }

    心法领悟:标题边框的嵌套。

    标题边框的构造方法中可以指定其他边框对象作为参数,并且创建的标题对话框的边界将由这个参数指定的边框对象去绘制,而标题边框只负责完成标题文本的绘制。本实例只演示了与3种常用边框的组合嵌套效果,实际上创建标题边框的构造方法中可以指定任意边框对象,所以不必局限于本实例嵌套的边框类型。

  • 相关阅读:
    VS2005 中关于“LC.EXE已退出,代码为 1”的错误解决方法。
    由于目标机器积极拒绝,无法连接。
    What is Android?
    利用批处理文件和任务计划实现Oracle数据库的自动备份
    就差了一点点....
    由Login.aspx引发编译器错误的解决方法
    都是补丁惹的祸...
    终于结束了
    GIS当然可以很酷
    rar.exe命令行参数与示例
  • 原文地址:https://www.cnblogs.com/mrxy/p/6773702.html
Copyright © 2011-2022 走看看