各种样式的边框创建示例

一、程序说明

  本练习制作各种各样的边框,运行效果如下图所示。执行本实例后,将创建一个带有页签的面板。选中左侧页面,显示 5 个简单类型的边框。选中右侧页面,显示 5 个带有标题的边框。本实例的知识点有: TabbledPane 组件, BorderFactory 类 和 Border 类的应用。



此程序运行结果示意图


二、编程思路

  本练习因为要在第一个面板上制作 5 个简单类型的边框,所以首先用 Border 类定义 5 个对象,再用 BorderFactory 类的 5 个不同的函数来创建边框,最后加载到第一个面板上。然后,因为要在第二个面板上制作 5 个带有标题的边框,所以首先用 TitledBorder 类定义一个对象,再用 BorderFactory.createTitledBorder() 函数创建边框标题,最后用 addCompForBorder() 函数设置标题文字。最后,因为要实现两类边框之间的切换,所以要用 TabbledPane 组件创建带有页签的面板,通过 addCompForBorder() 函数添加简单的边框,通过 addCompForTitledBorder () 函数添加带有标题的边框。


三、源代码

//BorderDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.*;

public class BorderDemo extends JFrame 
{
    public BorderDemo() 
    {
        //设置框架窗口的标题
        super("使用边框的例子");
        //定义5个简单类型的边框
        Border blackline, etched, raisedbevel, loweredbevel, empty;
        //创建黑色的线状边框
        blackline = BorderFactory.createLineBorder(Color.black);
        //创建蚀刻边框
        etched = BorderFactory.createEtchedBorder();
        //创建凸出边框
        raisedbevel = BorderFactory.createRaisedBevelBorder();
        //创建凹陷边框
        loweredbevel = BorderFactory.createLoweredBevelBorder();
        //创建空的边框
        empty = BorderFactory.createEmptyBorder();

        //第一个面板:简单边框
        JPanel simpleBorders = new JPanel();
        simpleBorders.setLayout(new BoxLayout(simpleBorders, BoxLayout.Y_AXIS));

        addCompForBorder(blackline, "线状边框",simpleBorders);
        addCompForBorder(etched, "蚀刻边框",simpleBorders);
        addCompForBorder(raisedbevel, "凸出边框",simpleBorders);
        addCompForBorder(loweredbevel, "凹陷边框",simpleBorders);
        addCompForBorder(empty, "空的边框",simpleBorders);

     
        //第二个面板:带有标题的面板
        JPanel titledBorders = new JPanel();
        titledBorders.setLayout(new BoxLayout(titledBorders,BoxLayout.Y_AXIS));
        TitledBorder titled;

        titled = BorderFactory.createTitledBorder("标题");
        addCompForBorder(titled,
                         "带标题的线状边框"
                         + " (标题默认的位置在左端)",
                         titledBorders);

        titled = BorderFactory.createTitledBorder(blackline, "标题");
        addCompForTitledBorder(titled,
                               "带标题的黑色的线状边框"
                                   + " (标题默认的位置在中央)",
                               TitledBorder.CENTER,
                               TitledBorder.DEFAULT_POSITION,
                               titledBorders);

        titled = BorderFactory.createTitledBorder(etched, "标题");
        addCompForTitledBorder(titled,
                               "带标题的蚀刻边框"
                                   + " (标题默认的位置在右端)",
                               TitledBorder.RIGHT,
                               TitledBorder.DEFAULT_POSITION,
                               titledBorders);

        titled = BorderFactory.createTitledBorder(loweredbevel, "标题");
        addCompForTitledBorder(titled,
                               "带标题的凹陷边框"
                                   + " (标题默认的位置在上端)",
                               TitledBorder.DEFAULT_JUSTIFICATION,
                               TitledBorder.ABOVE_TOP,
                               titledBorders);

        titled = BorderFactory.createTitledBorder(empty, "标题");
        addCompForTitledBorder(titled, "带标题的空的边框"
                               + " (标题默认的位置在下端)",
                               TitledBorder.DEFAULT_JUSTIFICATION,
                               TitledBorder.BOTTOM,
                               titledBorders);

  
        //创建TabbledPane组件
        JTabbedPane tabbedPane = new JTabbedPane();
        
        tabbedPane.addTab("简单的边框", null, simpleBorders, null);
       
        tabbedPane.addTab("带有标题的边框", null, titledBorders, null);
 
        tabbedPane.setSelectedIndex(0);

        getContentPane().add(tabbedPane, BorderLayout.CENTER);
    }

    //添加带有标题的边框
    void addCompForTitledBorder(TitledBorder border,
                                String description,
                                int justification,
                                int position,
                                Container container) 
    {
        border.setTitleJustification(justification);
        border.setTitlePosition(position);
        addCompForBorder(border, description,
                         container);
    }

    //添加简单的边框
    void addCompForBorder(Border border,
                          String description,
                          Container container) 
    {
        JPanel comp = new JPanel(false);
        JLabel label = new JLabel(description, JLabel.CENTER);
        comp.setLayout(new GridLayout(1, 1));
        comp.add(label);
        comp.setBorder(border);

        container.add(Box.createRigidArea(new Dimension(0, 10)));
        container.add(comp);
    }

    //程序的入口方法
    public static void main(String[] args) 
    {
        JFrame frame = new BorderDemo();
        //添加框架窗口的事件监听(监听关闭框架窗口事件)
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                //正常退出Java虚拟机
                System.exit(0);
            }
        });

        //显示框架窗口 
        frame.pack();
        frame.setVisible(true);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值