黑马程序员-JAVA基础-GUI

 

一.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 }

  运行结果图:

 

 

 

 

 

 

  

posted @ 2013-05-24 23:24  贺佐安  阅读(664)  评论(0编辑  收藏  举报