标签(JLabel)是最简单的Swing组件,标签对象的作用是对位于其后的组件作说明,可以设置标签的属性,即前景色,背景色,字体等。但不能动态地编辑标签中的文本。
程序关于标签的基本内容有以下几个方面:
1.声明一个标签名
2.创建一个标签对象
3.将标签对象加入到某个容器
JLabel类的主要构造方法是:
JLabel()//构造一个无显示文字的标签
JLabel(String s)//构造一个显示文字为s的标签
JLabel(String s,int align)//构造一个显示文字为s的标签 align为显示文字的水平方式/对齐方式(JLabel.LEFT(左对齐) JLabel.CENTER中心对齐 JLabel.RIGHT(右对齐))
JLabel类的其他常用方法是:
setText(String s)//设置标签显示文字
getText() //获取标签显示文字
setBackground(Color c) //设置标签的背景颜色,默认背景颜色是容器的背景颜色
setForeground(Color c) //设置标签上的文字的颜色,默认颜色是黑色
按钮(JButton)在界面设计中用于激发动作事件,按钮可显示文本,当按钮被激活时,能激发动作事件。
JButton常用构造方法有:
JButton(); //创建一个没有标题的按钮对象
JButton(String s);//创建一个标题为s的按钮对象
JButton类的其他常用方法有:
setLabel(String s);//设置按钮的标题文字
getLabel();//获取按钮的标题文字
setMnemonic(char mnemonic);//设置热键
addActionListener(ActionListener aL);//向按钮添加动作监视器
removeActionListener(ActionListener aL);//删除按钮的监视器
按钮处理动作事件的基本内容有以下几个方面:
①与按钮动作事件相关的接口是ActionListener,给出实现该接口的类的定义
②声明一个按钮名
③创建一个按钮对象
④将按钮对象加入到某个容器
⑤为需要控制的按钮对象注册监视器,对在这个按钮上产生的事件实施监听。如果按钮对象所在的类实现监视接口,注册监视器的代码形式是
addActionListener(this);
如果是别的类A的对象a作为监视器,类A必须实现ActionListener接口,完成监视器注册需用以下形式的两行代码
A a = new A();//创建A的实例a
addActionListener(a);//用对象a作为监视器对事件进行监视
⑥在实现接口ActionListener的类中,给出处理事件的方法的定义:
public void actionPerformed(ActionEvent e);
在处理事件的方法中,用获取事件原信息的方法获得事件原信息,并判断和完成相应处理。获得事件源的方法有:方法getSource()获得事件源对象;方法getActionCommand()获得事件源按钮的文字信息。
//处理按钮事件实例,应用程序定义了一个窗口,窗口内设置两个按钮,当点击Red按钮时,窗口的背景色设置成红色 点击Green按钮时,窗口的背景色置成绿色
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test {
public static void main(String []args) {
ButtonDemo myButtonGUI = new ButtonDemo();
myButtonGUI.setVisible(true);
}
}
class ButtonDemo extends JFrame implements ActionListener {
public static final int Width=250;
public static final int Height=200;
ButtonDemo() {
setSize(Width,Height); setTitle("按钮事件样例");
Container conPane = getContentPane();
conPane.setBackground(Color.BLUE);
conPane.setLayout(new FlowLayout());//采用FlowLayout布局
JButton redBut=new JButton("Red");
redBut.addActionListener(this);//给Red按钮注册监视器
conPane.add(redBut);//在窗口添加Red按钮
JButton greenBut = new JButton("Green");
greenBut.addActionListener(this);//给Green按钮注册监视器
conPane.add(greenBut);//在窗口添加Green按钮
}
public void actionPerformed(ActionEvent e) {//实现接口处理事件的方法
Container conPane = getContentPane();
if(e.getActionCommand().equals("Red")) {
conPane.setBackground(Color.RED);
}else if(e.getActionCommand().equals("Green")) {
conPane.setBackground(Color.GREEN);
}
}
}
用鼠标点击按钮产生事件对象,将事件送达对象,这个过程称为激发事件。当一个事件被送到监视器对象时,监视器对象实现的接口方法被调用,调用时系统会提供事件对象的参数。程序中虽然没有调用监视器方法的代码,但是程序做了两件事:第一,指定哪一个对象时监视器,它将响应由按钮的激发的事件,这个步骤称为监视器注册。第二,必须定义一个方法,当时间送到监视器时,这个方法将被调用,程序中没有调用这个方法的代码,这个调用时系统执行的。
在上面的程序中,代码
redBut.addActionListener(this);
注册this作为redBut按钮的监视器,随后的代码也注册this作为greenBut按钮的监视器。在上述的程序中,this就是当前的ButtonDemo对象myButtonGUI。这样,ButtonDemo类就是监视器对象的类,对象MyButtonGUI作为两个按钮的监视器,在类ButtonDemo中有监视器方法的实现。当一个按钮被点击时,系统以时间的激发者为参数,自动调用方法actionPerformed()。
组件不同,激发的时间种类也不同,监视器类的种类也不同。按钮激发的时间成为action事件,相应的监视器称为action监视器。一个action监视器对象的类型为ActionListener,类要实现ActionListener接口。程序体现这些内容需要做到两点:
①在类定义的首行街上代码implements ActionListener
②类内定义方法actionPerformed()
每个界面元素当激发事件时,都有一个字符串与这个事件相对应,这个字符串称为action命令。用代码e.getActionCommand()就能获取action事件参数e的命令字符串,据此,方法actionPerformed()就能知道是哪一个按钮激发的事件。在默认情况下,按钮的命令字符串就是按钮上的文字。如果有必要可以用方法setActionCommand()为界面组件设置命令字符串。