java awt类_JAVA中AWT基本组件及其使用方法(一)

一、按钮:

/**

*

按钮(Button)是JAVA图形用户界面的基本组件之一,它有两个构造方法:

* public Button()

* public Button(String lable)

*

其中第一种方法构造一个不带标签的按钮,第二种方法构造一个带标签的按钮。

*

当用户用鼠标单击按钮时,AWT事件处理系统将向按钮发送一个ActionEvent事件对象。如果应用程序需要对此作出反应,那么就

需要为注册事件监听程序并实现ActionListener接口。

* 下面的程序是一个使用按钮的例子。

* @author ifwater

*/

import java.awt.*;

import java.awt.event.*;

class ButtonExample extends WindowAdapter implements

ActionListener{

//定义基本组件

Frame

f;

Button

b;

TextField

tf;

int

tag=0;

//初始化按钮组件

public

static void main(String args[]) {

ButtonExample be=new ButtonExample();

be.go();

}

public

void go(){

//初始化其他组件,并且通过ActionListener()方法为按钮注册监听程序

f=new

Frame("Button Example");

b=new

Button("Sample");

b.addActionListener(this);

f.add(tf,"South");

tf=new

TextField();

f.add(tf,"Center");

f.addWindowListener(this);

f.setSize(300,500);

f.setVisible(true);

}

//实现ActionListener接口中的actionPerformed()方法

public void

actionPerformed(ActionEvent e){

String s1="You hava Pressed the Button";

String s2="You do another time";

if(tag==0){

tf.setText(s1);

tag=1;

}else

{

tf.setText(s2);

tag=0;

}

}

public

void windowClosing(WindowEvent e){

System.exit(0);

}

}

二、复选框

/**

*

复选框(Checkbox)是一个带标签的小方框,具有“开”和“关”两种状态

*

用户对复选框的操作将引发ItemEvent事件,该事件需要由实现ItemEvent接口的类的处理

*

在ItemEvent类中定义了getStateChange()方法,通过该方法可以判断用户对复选框所执行的操作是“开”还是“关”,其返回值为常

量Item.DESELECTED或Item.SELECTED

*

ItemEvent类中还定义了getItem()方法,该方法返回值为一字符串,表示用户操作所涉及的复选框的标签内容

* 复选框的有三种基本的构造方法:

* (1)public Checkbox()

构造一个不带标签、初始状态为“关”的复选框

* (2)public Checkbox(String

label)构造一个带标签、初始状态为“关”的复选框

* (3)public Checkbox(String label,boolean

state)构造一个带标签,其初始状态由boolean型变量state决定

* @author ifwater

*/

import java.awt.*;

import java.awt.event.*;

class CheckboxExample extends WindowAdapter implements

ItemListener{

//定义一个框架f、面板p、复选框one、复选框two、复选框three和文本框TextField

Frame

f;

Panel

p;

Checkbox

one,two,three;

TextField

tf;

public

static void main(String args[]){

//创建一个CheckboxExample类ce,它的方法为go()

CheckboxExample ce = CheckboxExample();

ce.go();

}

public void go(){

//前面对f和p进行了定义,现在通过new对其进行初始化

f = new Frame("Checkbox Example");

p = new Panel();

//通过初始化,创建三个复选框

one = new Checkbox("one");

two = new Checkbox("two");

three = new Checkbox("three");

//对三个复选框注册事件监听程序

one.addItemListener(this);

two.addItemListener(this);

three.addItemListener(this);

//使用add方法,将三个复选框加到f和p对象中

p.add(one);

p.add(two);

p.add(three);

f.add(tf,"South");

//注册事件监听程序,设定窗口f的大小,并把f以及它包含的组件显示出来对用户可见

f.addWindowListener(this);

f.setSize(300, 500);

f.setVisible(true);

}

//实现ItemListener接口中的itemStateChanged()方法

public void

itemStateChanged(ItemEvent e){

String state = "deselected";

String st;

if(e.getStateChange() ==

ItemEvent.SELECTED){

state = "selected";

}

st = e.getItem() + " " + state;

tf.setText(st);

}

//覆盖WindowAdapter类中的windowClosing()方法

public void

windowClosing(WindowEvent e){

//结束程序运行

System.exit(0);

}

}

三、单选框

/**

* 单选按钮时复选框组中特殊的构造方法:

* (1) public Checkbox(String label,boolean

state,CheckboxGroup group)

* (2) public Checkbox(String label,CheckboxGroup

group,boolean state)

*

在这两种构造方法中均使用了CheckboxGroup类型的参数,通过这两种构造方法,可以创建出多个从属于同一个复选框组

(CheckboxGroup group)的、带标签的复选框

* 复选框的初始状态有boolean型变量state指定

* @author ifwater

*/

import java.awt.*;

import java.awt.event.*;

class CheckboxGroupExample extends WindowAdapter implements

ItemListener{

//各个框架的定义

Frame

f;

Panel

p;

CheckboxGroup cbg;

Checkbox

one,two,three;

TextField

tf;

public

static void main(String args[]){

CheckboxGroupExample ce = new CheckboxGroupExample();

ce.go();

}

public void

go(){

//通过对已经定义的f、g进行初始化,创建f、g

f = new

Frame("CheckboxGroup Example");

p = new

Panel();

//通过对已经定义复选框进行初始化,创建三个从属于同一个组的复选框

cbg = new

CheckboxGroup();

one = new

Checkbox("One",cbg,false);

two = new

Checkbox("Two",cbg,false);

three = new

Checkbox("Three",cbg,true);

//注册事件监听程序

one.addItemListener(this);

two.addItemListener(this);

three.addItemListener(this);

p.add(one);

p.add(two);

p.add(three);

f.add(tf,"South");

//注册事件监听程序

f.addWindowListener(this);

f.setSize(300,500);

f.setVisible(true);

}

//实现ItemListener接口中的itemStateChanged()方法

public void

itemStateChanged(ItemEvent e){

String st;

st = e.getItem() + "selected";

tf.setText(st);

}

//覆盖WindowAdapter类中的windowClosing()方法

public void

windowClosing(WindowEvent e){

System.exit(0);

}

}

四、选择框

/**

*

选择框(Choice)是一个下拉式菜单,其构造方法为:public Choice()

*刚刚构造出来的选择框中并没有实际内容,需要使用addItem()方法为其添加新的选择项

* @author ifwater

*/

import java.awt.*;

class ChoiceExample{

Frame

f;

Choice

c;

Label l;

public

static void main(String arg[]){

ChoiceExample ce = new ChoiceExample();

ce.go();

}

void

go(){

f = new

Frame();

f.setLayout(new FlowLayout());

l =new

Label("your choice:");

f.add(l);

c = new

Choice();

c.addItem("First");

c.addItem("Second");

c.addItem("Third");

f.add(c);

f.setSize(250,160);

f.setVisible(true);

}

}

五、画布

/**

*

画布(Canvas)是一块空白区域,可用于绘画、输出文本信息或者接收键盘和鼠标输入,其构造方法为:

* public Canvas()

*

画布可对各类事件进行监听,通常需要在程序中实现KeyListener,MouseMotionListener和MouseListener等接口,以便使画布能

够对用户的输入作出响应

*

为了在画布中接收键盘事件,必须调用Canvas类的requestFocus()方法,否则,画布有可能接收不到属于它的键盘事件;那些键

盘事件可能被其他组件接收,也可能全部丢失

*

下面的程序创建了一个画布并实现了KeyListener和MouseListener接口

* @author ifwater

*/

import java.awt.*;

import java.awt.event.*;

import java.util.*;

public class MyCanvas implements

KeyListener,MouseListener{

Canvas

c;

String

s="";

TextField

t;

public

static void main(String args[]){

Frame f = new Frame("Canvas");

MyCanvas mc = new MyCanvas();

mc.c = new Canvas();

mc.t = new TextField();

f.add("South",mc,t);

f.add("Center",mc,c);

f.setSize(300.500);

mc.c.addMouseListener(mc);

mc.c.addKeyListener(mc);

f.setVisible(true);

}

//实现KeyListener接口中的方法

public void

keyTyped(KeyEvent ev){

t.setText("keyTyped");

s += ev.getKeyChar();

//将用户键入的字符写到画布上

c.getGraphics().drawString(s,0,20);

}

public void

keyPressed(KeyEvent ev){ }

public void

keyReleased(KeyEvent ev){

t.setText("keyReleased");

}

//实现MouseListener接口中的方法

public void MouseClicked(MouseEvent ev){

t.setText("mouseClicked");

//强制画布获取输入焦点

c.requestFocus();

}

public void MousePressed(MouseEvent ev){

t.setText("mousePressed");

}

public void MouseEntered(MouseEvent ev){

t.setText("MouseEntered");

}

public void MouseExited(MouseEvent ev){

t.setText("MouseExited");

}

}

六、标签

/**

*

标签(Label)对象通常只用于显示提示性的文本信息,其构造方法有三种形式:

* (1) public Label() 构造一个空标签

* (2) public Label(String text)

构造一个以左对齐方式显示指定字符串的标签

* (3) public Label(String text,int alignment)

构造一个显示指定字符串的标签,字符串对齐方式由int型参数alignment指定

(其值可为Label.LEFT,Label.RIGHT和Label.CENTER;分别为左对齐、右对齐和居中)

* 在程序中,可以使用setText(String

text)方法修改显示在标签上的字符串,但是在程序运行过程中,用户不能对标签内容进行

修改

* @author ifwater

*

*/

import java.awt.*;

public class LabelExample {

static public void main(String[]args){

Frame f;

Label l1,l2,l3;

f = new Frame("Label

Example");

f.setLayout(new

GridLayout(3,1,30,30));

l1 = new Label("Hello,this is

Label1");

l2 = new Label("Hello,this is

Label2");

l3 = new Label("Hello,this is

Label3");

f.add(l1);

f.add(l2);

f.add(l3);

f.setSize(300, 200);

f.setVisible(true); }

}

七、文本域

文本域(TextField)是一个单行的文本输入框,它有四种构造方法:

(1) public TextField() 构造一个空文本域

(2) public TextField(String text)

构造一个显示指定字符串的文本域,String型参数text指定要显示的初始字符串

(3) public TextField(int columns)

构造一个具有指定列数的空文本域,int型参数指定文本域的列数

(4) public TextField(String text,int columns)

构造一个具有指定列数、显示指定初始字符串的文本域,String型参数text指

定要显示的初始字符串,int型参数指定文本域的列数

由于在文本域中只允许输入一行文本内容,因此当用户按Enter或Return键时,将会引发ActionEvent事件,对此,可用实现了

ActionListener接口的类通过actionPerformed()方法进行处理。除此之外,也可以根据需要为文本域注册其他事件监听程序

八、文本区

/**

*

文本区(TextArea)是一个多行多列的文本输入框,它有五种构造方法:

* (1) public TextArea()

构造一个有水平和垂直滚动杠的空文本区

* (2) public TextArea(String text)

构造一个有水平和垂直滚动杠并显示初始文本内容的文本区

* (3) public TextArea(int rows,int columns)

构造一个有水平和垂直滚动杠并具有指定行数和列数的文本区

* (4) public TextArea(String text,int rows,int

columns)

构造一个有水平和垂直滚动杠、具有指定行数和列数并显示初始文

本内容的文本区

* (5) public TextArea(String text,int rows,int

columns,int scrollbars)

构造一个具有指定行数、列数及滚动杆并显示初始

文本内容的文本区

*

其中,String型参数指定要显示的初始文本的内通;int型参数rows和columns分别指定文本区行数和列数,int型参数scrollbars

指定要显示的滚动杆,它有四种可能的取值

* 1) SCROLLBARS_BOTH

同时显示水平和垂直滚动杆

* 2) SCROLLBARS_VERTICAL_ONLY

只显示垂直滚动杆

* 3) SCROLLBARS_HORIZONTAL_ONLY

只显示水平滚动杆

* 4) SCROLLBARS_NONE 两个滚动杆都不显示

*

可以使用setEditable(boolean)方法将文本区设置为不可编辑或可编辑的状态。

*

由于文本区中的可输入的文本是多行的,用户按Enter或Return键的结果只是向缓冲区输入一个字符,而不能表示输入结束

*

因此,输入完成时,通常要在文本区旁放置一个Apply或Commit之类的按钮

*

下面的程序创建了一个文本域和两个文本区,通过事件处理程序,用户在文本域和第一个文本区上进行操作所引发的事件名称会

显示在第二个文本区中

* @ author ifwater

*/

import java.awt.*;

import java.awt.*;

public class TextAreaExample implements

ActionListener,TextListener{

Frame

f;

TextField

tf1;

TextArea

ta1,ta2;

static

public void main(String args[]){

TextExample te = new TextExample();

te.go();

}

public

void go(){

f = new Frame("Text Example");

f.setLayout(new FlowLayout());

tf1 = new TextField("Init",20);

tf1.addActionListener(this);

tf1.addTextListener(this);

ta1 = new TextArea("Initial",4,30);

ta1.addTextListener(this);

ta2 = new TextArea("Only

horizontal",4,30,TextArea.SCROLLBARS_HORIZONTAL_ONLY);

f.add(tf1);

f.add(ta1);

f.add(ta2);

f.setSize(300,300);

f.setVisible(true);

}

public void

actionPerformed(ActionEvent e){

ta2.append("\nActionPerformed");

}

public void

TextValueChanged(TextEvent e){

ta2.append("\nTextValueChanged");

}

}

九、文本组件

虽然TextArea和TextField是两个不同的类,但是如果查阅名为TextComponet类的文档,就会发现这个类定义了很多TextArea类

和TextField类共有的方法,这是因为该类是TextArea和TextField两个类的父类。

在TextComponet类中定义的主要方法有:

(1)

getSelectedText() 从文本组件中提取被选中的文本内容

(2)

getText() 从文本组件中提取所有的内容

(3)

select(int,int) 在文本组件中选中部分的内容

(4)

selectAll() 在文本组件中选中所有内容

(5)

setEditable(boolean) 设置为可编辑或不可编辑状态

(6)

setText(String) 设置文本组件中的内容

十、列表

/**

*

列表(List)是可供用户进行选择的一系列可选项,它可支持单项选择和多项选择。列表有三种构造方法:

* (1) public List() 构造一个单选列表

* (2) public List(int rows)

构造一个显示指定项数的单选列表,其中int型参数指定要显示的项数

* (3) public List(int rows,boolean

multipleMode)构造一个显示指定项数的列表,其中int型参数指定要显示的项数,boolean

型参数指定该列表示单选(false)列表还是多选(true)列表

*

下面的程序构造了一个显示5个可选项的单选列表,通过ItemListener接口中的itemStateChanged()方法,用户的选择被显示在窗

口底部

* @author ifwater

*/

import java.awt.*;

import java.awt.*;

public class ListExample extends Frame implements

ItemListener{

Panel

p;

List

theList;

TextField

tf;

ListExample(String s){ super (s);}

public

static void main(String args[]){

ListExample le = new ListExample("List Example");

le.init();

}

void

init(){

//构造一个显示5个可选项的单选列表

theList = new List(5,false);

theList.add("Monday");

theList.add("Tuesday");

theList.add("Wednesday");

theList.add("Thursday");

theList.add("Friday");

theList.add("Saturday");

theList.add("Sunday");

//注册ItemEvent事件监听程序

theList.addItemListener(this);

p= new Panel();

p.add(theList);

add(p,"Center");

tf = new TextField();

add(tf,"South");

setSize(300,200);

setVisible(true);

}

//实现ItemListener接口中的方法

public void

itemStateChanged(ItemEvent e){

tf.setText(thisList.getSelectedItem());

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值