使用GUI元素启动一个程序
在Java中建立一个GUI程序至少需要三类
对象:
• 组件
• 事件
• 监听器
GUI组件是定义了屏幕元素的一个组件,用它可以显示信息或允许用户以特定的方式与程
序进行交互。例如按钮、文本域、标签、滚动条和菜单等都是GUI组件。 容器是一类特殊的
组件,它可以容纳并组织其他的组件。
事件也是一个对象,它代表引起我们注意的某些事情。通常,事件对应于用户的动作,
例如按下鼠标按钮或是在键盘上键入信息。大多数GUI组件都会生成事件,表示对应于那个
组件的用户动作。例如,按钮组件会生成表示按钮被按下的事件。以GUI为基础的响应来自
用户事件的程序称为事件驱动的程序。
监听器也是一个对象,它“等待”事件的发生,并在事件发生时以某种方式响应它。设
计基于GUI程序的大部分工作就是建立监听器、所监听的事件及产生事件的组件之间的关系。大部分情况下,我们使用Java类库提供的组件和事件。我们将根据组件的功能来做设计,
不过它们的基本角色已事先设计好了。此外我们还将编写自己的监听器类来响应所发生的事件。
所以,要编写使用GUI的程序,必须完成以下几步:
• 实例化并设置必要的组件
• 实现监听器类,定义当具体事件发生时的对策
• 建立监听器与产生事件的组件之间的关系
Java组件和其他与GUI有关的类基本上定义在两个包中: java.awt和javax.swing。(注意
javax.swing中的x)。 抽象窗口工具(Abstract Windowing Toolkit, AWT)是最初的Java GUI
包,它含有我们要用到的许多重要的类。 Swing包是后加的,它提供了比AWT包更通用的组
件。两个包都是开发GUI所必需的,如果两个包有某个相同的组件时,我们选用Swing组件。
创建一个PushCounterPanel类
import javax.swing.JFrame;
public static void main(String[] args) {
JFrame frame = new JFrame("Push Counter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PushCounterPanel panel = new PushCounterPanel();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
创建一个PushCounterPanel 类
import java.awt.;
import java.awt.event.;
import javax.swing.*;
public class PushCounterPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private int count;
private JButton push;
private JLabel label;
public PushCounterPanel(){
count=0;
push = new JButton("Push Me!");
push.addActionListener(new ButtonListener());
label = new JLabel("Pushes:"+count);
add(push);
add(label);
setBackground(Color.cyan);
setPreferredSize(new Dimension(3000, 400));
}
private class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent event) {
count++;
label.setText("Pushes:"+count);
}
}
}
运行结果: