ITEEDU

swing的版面结构

版面管理器

事件处理

鼠标事件

键盘事件处理

窗口与面板的使用

JInternalFrame的使用(窗口与面板)

JTabbedPane,JScroolPane,JScrolBa的使用

标签与按钮的使用与介绍

[复选框、选项按钮、列表方框、下拉式列表的使用与介绍]

表格(Table)的使用与介绍

JTable的事件处理

1文字输入组件的使用与介绍

树(Tree)的使用与介绍

对话框(Option Pane与Dialog)的使用与介绍

菜单与工具栏的使用与介绍

文件选择对话框,颜色选择对话框,分隔线的使用与介绍.

Slider,Timer,Progress的使用

标签与按钮的使用与介绍

Border,Icon,JLabel,JButton,JToggleButton

6-1:Border的使用

Border类是应用在描绘组件的边界,Border本身是一个interface,里面定义了3个方法,为getBorderInsets()、isBorderOpaque() 、与isBorderOpaque()、与paintBorder().若您想使用Border类来绘制你的窗口边界,您必须先实现(implements)这3个方法,可说 是有点麻烦。还好,java本身提供了另一个类,它已经实现了Border类所有的方法,且提供许多不同的边界样式供用户使用,用户 只需要选择到底要用哪个样式即可,不需要理会如何去画出这个边界,因为这个类已经都帮您实现好了,这个类就是 BorderFactory,下面是borderFactory的类层次结构图。

BorderFactory的类层次结构图:

 java.lang.Object
  -----------javax.swing.BorderFactory
SimpleBorder.java
 import javax.swing.border.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class SimpleBorder{
    public static void main(String[] args){
    JFrame f=new JFrame("SimpleBorder");
    Container content=f.getContentPane();
    JButton b=new JButton();
    b.setBorder(BorderFactory.createLineBorder(Color.blue,10);//createLineBorder方法指定边界的颜色与宽度.
    content.add(b);
    f.setSize(200,150);
    f.show();
    f.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }	
    });   	
    }
    }
BorderFactory提供了以下方法:
    static Border          creatBevelBorder(int type)建立一个立体的边界,并由参数type指定为凹陷或突起,type可为
    BevelBorder.LOWERED表示凹陷,或是BevelBorder.RAISED表示突起。
    static Border          createBevelBorder(int type,Color highlight,Color shadow)建立一个立体的边界,并指定突边与阴
    影的颜色。
    static Border          createBevelBorder(int type,Color highlightOuter,Color highlightInner,Color shadowOuter
    ,Color shadowInner)建立一个立体的边界,并指定内外部的突边与阴影的颜色。
    static CompoundBorder  createCompoundBorder()建立一个复合边界。 
    static CompoundBorder  createCompoundBorder(Border outsideBorder,Border insideBorder)建立一个复合边界,并指定它
    的内外边界。
    static Border          createEmptyBorder()建立一个空的边界。
    static Border          createEmptyBorder(int top,int left,int bottom,int right)建立一个空的边界,并指定上下左右
    的宽度,在这些宽度中不能作绘图的效果。
    static Border          createEtchedBorder()建立一个四周有凹痕的边界。
    static Border          createEtchedBorder(Color highlight,Color shadow)建立一个四周有凹痕的边界,并指定突边与阴影
    的颜色。 
    static Border          createLineBorder(Color color)
    建立一个线务边界,并指定线条的颜色。
    static Border          createLineBorder(Color color,int thicness)
    建立一个线务边界,并指定线条的颜色与宽度。
    static Border          createLoweredBevelBorder()建立一个具有凹陷效果的边界,意义与
    createBevelBorder(BevelBorder.LOWERED)相同。
    static MatteBorder     createMatteBorder(int top,int left,int bottom,int right,Color color)建立一个垫子边界,这跟
    createEmptyBorder有点像,但可以指定边界颜色。
    static MatteBorder     createMatteBorder(int top,int left,int bottom,int right,Icon tileIcom)建立一个垫子边界,并
    指定边界的花纹。
    static Border          createRaisedBevelBorder()建立一个具有突起效果的边界,意义与createBevelBorder(BevelBorder.
    RAISED)相同。
    static TitledBorder    createTitledBorder(Border border)建立一个标题边界,但没有标题名称。
    static TitledBorder    createTitledBorder(Border border,String title)建立一个标题边界,并指定标题名称,标题默认位
    置是TitledBorder.DEFAULT_JUSTIFICATION与TitledBorder.DEFAULT_POSITION,也就是左上方。
    static TitledBorder    createTitledBorder(Border border,String title,int titleJustification,int titlePosition)
    建立一个标题边界,并指定标题名称与标题位置,参数titleJustification可为:
    TitledBorder.LEFT
    TitledBorder.CENTER
    TitledBorder.RIGHT
    TitledBorder.DEFAULT_JUSTIFICATION(leading)
    参数titlePosition可为:
    TitedBorder.ABOVE_TOP
    TitledBorder.TOP(sittin on the top line)
    TitledBorder.BELOW_TOP
    TitledBorder.ABOVE_BOTTOM
    TitledBorder.BOTTOM(sitting on the bottom line)
    TitledBorder.BELOW_BOTTOM
    TitledBorder.DEFAULT_POSITION(top)
    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)建立一个标题边界,并指定标题名称,标题位置、字体与标题颜
    色。
    static TitledBorder    createTitledBorder(String title)建立一个标题边界,并指定标题名称,其他为默认值。
BorderDemo.java
import javax.swing.border.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BorderDemo {
	public static void main(String[] args) {
		JFrame f = new JFrame("BorderDemo");
		Container content = f.getContentPane();
		JLabel label = new JLabel();
		// label.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));//凹陷效果
		// label.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));//突起效果

		// 凹陷效果,并设置突出与阴影的颜色
		// label.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.red,Color.blue));

		// 凹陷效果,并设置内外部突出与阴影的颜色
		// label.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.red,Color.blue,Color.yellow,Color.green));

		/*
		 * EmptyBorder:建立一个空的边界,可指定边界的宽度,这在区隔组件之间的距离时可能用到。
		 * EtchedBorder:建立一个四周有凹痕的边界,也可以指定突边与阴影的颜色.
		 */
		// label.setBorder(BorderFactory.createEtchedBorder());

		// 设置四周有凹痕的边界,并指定内外部的突边与阴影的颜色
		// label.setBorder(BorderFactory.createEtchedBorder(Color.red,Color.blue));

		// LineBorder:建立一个线条边界,并可以指定线条的颜色与宽度。
		// label.setBorder(BorderFactory.createLineBorder(Color.blue,5));

		// MatteBorder:建立一个Matte边界,这个方法与createEmptyBorder()有点像,但可以指定边界颜色
		// 或利用Icon产生边界花纹.
		// label.setBorder(BorderFactory.createMatteBorder(5,5,5,5,Color.green));

		// label.setBorder(BorderFactory.createMatteBorder(25,25,25,25,new
		// ImageIcon(".\\icons\\star.gif")));

		/*
		 * CompoundBorder: 建立一个复合边界,并可以指定它的内外边界,例如我们可以指定它的外边界为LineBorder,
		 * 它的内边界为MatteBorder。
		 */
		// label.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.blue,5),
		// BorderFactory.createMatteBorder(20,20,18,18,new
		// ImageIcon(".\\icons\\star.gif"))));

		// TitleBorder:建立一个标题边界,我们可以指定边界的标题名称、标题位置、字体与标题颜色。
		// label.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.blue,5),"Line Border"
		// ,TitledBorder.LEFT,TitledBorder.TOP));

		label.setBorder(BorderFactory.createTitledBorder(BorderFactory
				.createLineBorder(Color.blue, 5), "Line Border",
				TitledBorder.LEFT, TitledBorder.ABOVE_TOP, new Font(
						"SansSerif", Font.ITA_LIC, 14), Color.red));
		content.add(label);
		f.setSize(200, 150);
		f.show();
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
}