Swing读书笔记标签与按钮的使用与介绍_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Swing读书笔记标签与按钮的使用与介绍

Swing读书笔记标签与按钮的使用与介绍

 2011/1/10 9:46:36  chenhailong  http://chenhailong.javaeye.com  我要评论(0)
  • 摘要:Swing读书笔记标签与按钮的使用与介绍Border,Icon,JLabel,JButton,JToggleButton6-1:Border的使用Border类是应用在描绘组件的边界,Border本身是一个interface,里面定义了3个方法,为getBorderInsets()、isBorderOpaque()、与isBorderOpaque()、与paintBorder().若您想使用Border类来绘制你的窗口边界,您必须先实现(implements)这3个方法,可说是有点麻烦。还好
  • 标签:笔记 读书笔记 使用 Swing

Swing读书笔记标签与按钮的使用与介绍

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

/**
 * 
 */
package com;

/**
 * @author chenhailong
 *
 */
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();
    //createLineBorder方法指定边界的颜色与宽度.
    b.setBorder(BorderFactory.createLineBorder(Color.blue,10));
    content.add(b);
    f.setSize(200,150);
    f.setVisible(true);
    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 TitledBordercreateTitledBorder(Border border,

String title,int titleJustification,int titlePosition, Font titleFont,Color titleColor)

建立一个标题边界,并指定标题名称,标题位置、字体与标题颜 色。

static TitledBordercreateTitledBorder(String title)

建立一个标题边界,并指定标题名称,其他为默认值。

/**
 * 
 */
package com;

/**
 * @author chenhailong
 *
 */
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.ITALIC,14),Color.red));
      content.add(label);
      f.setSize(200,150);
      f.setVisible(true);
      f.addWindowListener(new WindowAdapter(){
      	 public void windowClosing(WindowEvent e){
      	   System.exit(0);	
      	 }
      });	
    }
}

?JLabel的使用:

类层次结构图:

java.lang.Object

--java.awt.Component

--java.awt.Container

--javax.swing.JComponent

--javax.swing.JLabel

在以前的许多范例,我们已经使用过JLabel这个组件,相信大家对此组件应该不会感到陌生,接下来我们来深入了解JLabel 的各种我特性。

一般而言:我们最常在JLabel上放置文字或图形,也因此我们常常需要调整JLabel上文字或图形。在JLabel实现了 SwingConstants这个interface,而这个interface主要是定义一些组件排列方式的参数:

TOP

LEFT

RIGHT

BOTTOM

CENTER

NORTH

EAST

WEST

SOUTH

NORTH_

EAST

SOUTH_EAST

SOUTH_WEST

NORTH_WEST

HORIZONTAL

VERTICAL LEADING

置于前端 TRAILING 置于后端。

在swing中,有相当多的类均实现了SwingConstants这个interface,如AbstractButton、JCheckBoxMenuItem、JLabel、 JProgressBarJSeparator、JSlider、JTextField、JTabbedPane、JToolbar等等,因此当你使用到这些组件时,你就可以在适当 的时候,利用SwingConstants的参数来定义组件的位置了。 JLabel共有6种构造函数,如下:

JLabel构造函数:

JLabel():建立一个空白的JLabel组件。

JLabel(Icon image):建立一个含有Icon的JLabel组件,Icon的默认排列方式是CENTER. JLabel(Icon image,int horizontalAlignment):建立一个含有Icon的JLabel组件,并指定其排列方式。

JLabel(String text):建立一个含有文字的JLabel组件,文字的默认排列方式是LEFT. JLabel(String text,int horizontalAlignment):建立一个含有文字的JLabel组件,并指定其排列方式。 JLabel(String text,Icon icon,int horizontalAlignment):建立一个含有文字与Icon的JLabel组件,并指定其排列方式, 文字与Icon的间距,默认值是4个pixels.

/**
 * 
 */
package com;

/**
 * @author chenhailong
 *
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JLabelDemo1{
  public static void main(String[] args){
  	 JFrame f=new JFrame("JLabelDemo1");
  	 Container contentPane=f.getContentPane();
  	 JLabel label=new JLabel();
  	 label.setText("Hello");
  	 label.setHorizontalAlignment(JLabel.RIGHT);
  	 label.setVerticalAlignment(JLabel.TOP);
  	 contentPane.add(label);
  	 f.pack();
  	 f.setVisible(true);
  	 f.addWindowListener(new WindowAdapter(){
  	     public void windowClosing(WindowEvent e){
  	        System.exit(0);	
  	     }	
  	 });
  }
}

?JButton的使用:

JButton的类层次结构图:

java.lang.Object

--java.awt.Component

--javax.swing.JComponent

--javax.swing.AbstractButton

--javax.swing.JButton JButton

是继承AbstractButton类而来,而AbstractButton本身是一个抽象类,里面定义了许多组件设置的方法与组件事件驱动 方法(Event handle),如addActionListener()、setText等,详情请看相关手册,所提供的方法不下50种,可说是非常重要的一个 类。事实上,AbstractButton类不公被JButton所继承,它同时还被JMenuItem、JToggleButton、JCheckBox、JRadioButton等类所 继承,提供给这些类强大且方便的功能,而且在使用上更能掌握这些组件的特性。我们此节先来了解JButton与JToggleButton的特 性,其余类在后面各节介绍。

JButton共有4个构造函数:

JButton():建立一个按钮。

JButton(Icon icon):建立一个有图像的按钮。

JButton(String icon):建立一个有文字的按钮。

JButton(String text,Icon icon):建立一个有图像与文字的按钮。

由JButton的构造函数可以看出:JButton与JLabel的使用相当类似,只是JButton少了排列方式的参数罢了。要是我们想设置 JButton内文字或图像的水平排列方式,我们可以利用AbstractButton抽象类所提供的setHorizontalAlignment()方法来达成。 JButton在使用上与JLabel相当类似,只是类的设计方式有所不同,JLabel类自行提供组件排列方式的方法,而JButton是继承 AbstractButton抽象类的方法来排列按钮内的内容。为什么JButton不自行提供排列方式等方法呢?主要是因为JButton与JMenuItem 、JToggleButton、JCheckBox、JRadioButton组件有许多共同的物性,例如它们都会有“按”的操作、都可以插入Icon与文字、 都可设置快捷键、都可呈现Enable或Disable状态等等,因此将AbstractButton类独立出来,实现这些共通的方法,再由其他类来继 承,将可增加程序结构对象化与模块化的特性,也让程序更容易维护. JButton类所提供的方法非常少,大部份都会用到AbstractButton抽象类所提供的方法。

/**
 * 
 */
package com;

/**
 * @author chenhailong
 *
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class JButtonDemo1{
	   public static void main(String[] args){
	   	  JFrame f=new JFrame("JButtonDemo1");
	   	  Container contentPane=f.getContentPane();
	   	  /*你也可以用下面这个方式代替:
	   	   *JButton b=new JButton();
	   	   *b.setIcon(new ImageIcon(".\\icons\\hand.jpg"));
	   	   *b.setText("按我");
	   	   */
	   	  JButton b=new JButton("按我");
	   	  /*如果没有设置文字的位置,系统默认值会将文字置于图形的右边中间位置。
	   	   */
	   	  b.setHorizontalTextPosition(JButton.CENTER);
	   	  b.setVerticalTextPosition(JButton.BOTTOM);
	   	  contentPane.add(b);
	   	  f.pack();
	   	  f.setVisible(true);
	   	  f.addWindowListener(new WindowAdapter(){
	   	  	  public void windowClosing(WindowEvent e){
	   	  	  	System.exit(0);
	   	  	  }
	   	  });
	   }
	}

?好了 就到这把,嘻嘻。有时间在写!!!!!!

发表评论
用户名: 匿名