标签:
一.GUI 概述:
图形用户界面(Graphics User Interface, GUI) 。在Java 操作图形界面的一个类库称为“抽象工具集合(Abstract Window Toolkit , AWT)”。它为Java应用程序提供了基本图形组件。
所有和AWT 编程相关的类都放在 java.awt 包以及它的子包中。AWT 编程中有两个基类:Component 和 MenuComponent 。
二.操作图形化界面:
创建图形化界面的一般步骤:
1、创建frame窗体。
2、对窗体进行基本设置。比如大小,位置,布局等。
3、定义组件。
4、将组件添加到窗体中。
5、添加事件监听机制。
6、让窗体显示。
上面步骤中最重要的便是5、添加事件监听机制。
事件监听:

事件监听机制的特点:
1、事件源:就是awt包或者swing 包中的那些图形界面组件。
2、事件:每一个事件源都有自己特有的对应事件和共享事件。
3、监听器:将可以触发某一个事件的动作(不唯一)都已经封装到了监听器中。
4、事件处理。
1 import java.awt.*;
2 import java.awt.event.WindowAdapter;
3 import java.awt.event.WindowEvent;
4 import java.awt.event.WindowListener;
5 public class FrameDemo {
6 public static void main(String[] args) {
7 // 创建一个不可见的窗体
8 Frame frame = new Frame() ;
9 // 设置窗体大小。
10 frame.setSize(500, 400) ;
11 // 设置窗体弹出位置:
12 frame.setLocation(200, 300) ;
13 // 设置布局。
14 frame.setLayout(new FlowLayout()) ;
15 // 创建菜单栏
16 MenuBar mb = new MenuBar() ;
17 // 创建菜单
18 Menu m = new Menu("文件") ;
19 // 创建子菜单
20 MenuItem closeItem = new MenuItem("退出");
21 m.add(closeItem) ;
22 mb.add(m) ;
23 // 创建按钮
24 Button button = new Button("确定");
25 // 添加菜单
26 frame.setMenuBar(mb) ;
27 frame.add(button) ;
28 // 添加监听器
29 frame.addWindowListener(new WindowAdapter() {
30 public void windowClosing(WindowEvent e) {
31 System.exit(0) ;
32 }
33 });
34 // 调用 Component 类的 setVisible(boolean) 进行显示。
35 frame.setVisible(true) ;
36 }
37 }
代码FrameDemo,简单的演示了操作图形界面的步骤:
三.AWT 常用组件:
AWT组件需要调用运行平台的图形界面来创建和平台一致的对等体,所以AWT只能使用所有平台都支持的公共组件。
AWT提供的基本组件:
> Button : 按钮。
> Canvas : 用于绘画的画布。
> Checkbox : 复选框组件(也可变为单选框组件)。
> CheckboxGroup : 用于多个Checkbox 组件组合成一组,一组Checkbox组件将只有一个可以被选中,即全部变为单选框组件。
> Choice : 下拉式选择框组。
> Frame : 窗口。
> Label : 标签类,可以放置提示性文本。
> List : 列表框组件,可以添加多项条目。
> Panel :不能单独存在的基本容器,必须放到其他容器中。
> Scrollbar : 滑动条组件。
> ScrollPane : 带水平及垂直滚动条的容器组件。
> TextArea : 多行文本域 。
> TextField : 单行文本框。
四.图形操作练习:
练习1:在文本框中输入目录,点击“转到”按钮,将该目录中的文件与文件夹名称列在下面的文本区域
思路:
1、画出GUI 窗口。
2、添加监听事件。
3、通过File操作文件。
1 public class ReadFileGUI {
2 // 根据题目定义需要的组件:
3 private Frame frame ;
4 private Button toFileButton ;
5 private TextField dirText ;
6 private TextArea fileAndDirArea ;
7
8 //错误提示对话框
9 private Dialog errDialog ;
10 private Label inforLabel ;
11 private Button okButton ;
12 ReadFileGUI() {
13 init();
14 }
15 //初始化方法:
16 public void init() {
17 frame = new Frame("读取文件和文件目录") ;
18 frame.setBounds(300,200,500,400) ;
19 //设置为不能更改窗体大小。
20 frame.setResizable(false) ;
21 frame.setLayout(new FlowLayout()) ;
22
23 toFileButton = new Button("转到") ;
24 dirText = new TextField(40) ;
25 fileAndDirArea = new TextArea(null, 20, 45, TextArea.SCROLLBARS_BOTH) ;
26 //设置为不可以编辑:
27 fileAndDirArea.setEditable(false) ;
28
29 //初始化错误提示框。
30 errDialog = new Dialog(frame, "提示", true) ;
31 errDialog.setBounds(300,200,350,100) ;
32 errDialog.setResizable(false) ;
33 errDialog.setLayout(new FlowLayout()) ;
34 inforLabel = new Label() ;
35 okButton = new Button("确定");
36 errDialog.add(inforLabel) ;
37 errDialog.add(okButton) ;
38 frame.add(dirText) ;
39 frame.add(toFileButton) ;
40 frame.add(fileAndDirArea) ;
41
42 addListenerEvent();
43 frame.setVisible(true) ;
44 }
45 //添加监听事件
46 public void addListenerEvent() {
47 frame.addWindowListener(new WindowAdapter(){
48 public void windowClosing(WindowEvent e){
49 System.exit(0) ;
50 }
51 });
52 //添加 toFileButtion 监听事件
53 toFileButton.addActionListener(new ActionListener() {
54 public void actionPerformed(ActionEvent e) {
55 //按下“转到”按钮,则读取 dirText 中数据,并且打印在fileAdnDirArea 中。
56 ReadDirAndFile() ;
57 }
58 }) ;
59 //添加 dirText 监听事件,按回车键便能执行 打印出目录文件
60 dirText.addKeyListener(new KeyAdapter() {
61 public void keyPressed(KeyEvent e) {
62 if (e.getKeyCode() == e.VK_ENTER)
63 ReadDirAndFile() ;
64 }
65 }) ;
66 //添加okButton 监听事件。
67 okButton.addActionListener(new ActionListener() {
68 public void actionPerformed(ActionEvent e) {
69 errDialog.setVisible(false) ;
70 }
71 }) ;
72 }
73 public void ReadDirAndFile() {
74 String str = dirText.getText() ;
75 File dir = new File(str) ;
76 if (dir.exists() && dir.isDirectory()) {
77 fileAndDirArea.setText("") ;
78 String[] fileNames = dir.list() ;
79 for (String name : fileNames) {
80 fileAndDirArea.append(name+"\t\n") ;
81 }
82 }
83 else {
84 inforLabel.setText("路径:‘"+str+"‘ 不正确,请重新输入。") ;
85 errDialog.setVisible(true) ;
86 // fileAndDirArea.setText("路径格式错误!") ;
87 }
88 }
89
90 public static void main(String[] args) {
91 new ReadFileGUI() ;
92 }
93 }
运行结果图:
标签:
原文地址:http://www.cnblogs.com/wuxiaodong/p/4776771.html