黑马程序员—GUI

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------


用户与计算机交互有两种方式:命令行,图形化界面

GUI(Graphical UserInterface)(图形用户接口)用图形的形式,来显示计算机操作的界面,这样更方便更直观。

CLI(Command line UserInterface)(命令行用户接口)就是常见的Dos命令行操作,需要记忆一些常用的命令,操作不直观。

 

Java为GUI提供的对象都存在于java.awt和javax.swing包中

java.awt(Abstract WindowToolkit)抽象窗口工具包,需要调用本地系统方法实现功能,重量级控件,依赖于平台。

javax.swing,在awt的基础上建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了可移植性。基于awt,又增加了更多的组件,轻量级控件

Eclipse是sun公司用自己开发的swt做的

 

Container作为一个组件,它里面可以添加组件

 

布局管理器

容器中的组件的排放方式,就是布局

常见的布局管理器:

FlowLayout(流式布局管理器)从左到右的顺序排列,Panel默认的布局管理器

BorderLayout(边界式布局)东南西北中,Frame默认的布局管理器

GridLayout(网格布局管理器)规则的矩阵

CardLayout(卡片布局管理器)选项卡

GridBagLayout(网格包布局管理器)非规则的矩阵

 

查阅API,Component的方法超多,用得着再查阅

Frame会创建一个窗体

构造:Frame f = new Frame(“标题”);

方法:

f.setSize(500,400);

f.setLocation(300,200);

f.add(new Button(“按钮”));

f.setLayout(new FlowLayout());

f.setVisible(true);

创建图形化界面思路:

1.创建Frame窗体

2.对窗体进行基本设置,比如大小,位置,布局等

3.定义组件

4.将组件通过窗体的add方法添加到窗体中

5.让窗体显示,通过setVisible(true)

 

Container常用子类:Window,Panel(面板,不能单独存在)

Window常用子类:Frame,Dialog

 

事件监听机制组成:事件源(组件),事件(Event),监听器(Listener),事件处理(引发事件后处理方式)

事件监听机制流程图:


事件监听机制的特点:

事件源:就是awt包或者swing包中的那些图形界面组件

事件:每一个事件源都有自己的特有的对应事件和共性事件

监听器:将可以触发有一个事件的动作(不止一个)都已经封装到了监听器中

以上三者在Java中都已经定义好了,直接获取其对象就可以了,我们要做的事情就是对产生的动作进行处理。

 

确定事件源:窗体Frame f = new Frame(“标题”)

创建监听器:

WindowListener监听器接口,它的实现类WindowAdapter已经实现了WindowListener的所有方法,而且没有方法体,这样我们创建一个类继承WindowAdapter,就可以创建一个监听器,在监听器中复写父类方法就可以处理事件。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. class MyWin extends WindowAdapter  
  2. {  
  3.     public void windowClosing(WindowEvent e)  
  4. <span style="white-space:pre">    </span>{  
  5.     System.exit(0);  
  6. <span style="white-space:pre">    </span>}  
  7. }  

注册监听器到事件源:f.addWindowListener(new MyWin());

 

通过关闭窗体示例了解到,想要知道那个组件具备什么样的特有监听器,需要查看该组件对象的功能。

例如Button,通过查阅API,发现按钮有一个方法addActionListener(ActionListener al)方法,通过该方法可以给按钮添加监听器。ActionListener监听器接口只有一个方法,它是少数(三个)没有适配器(就像WindowListener的WindowAdapter)的监听器接口,实现那个方法就可以了。


示例:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.awt.*;  
  2. import java.awt.event.*;  
  3.   
  4. class FrameDemo   
  5. {  
  6.     private Frame f = null;  
  7.     private Button btn = null;  
  8.     FrameDemo()  
  9.     {  
  10.         f = new Frame("我的窗口");  
  11.         btn = new Button("按钮");  
  12.     }  
  13.     public void createMyFrame()  
  14.     {  
  15.         f.setBounds(200,200,400,400);  
  16.         f.setLayout(new FlowLayout());  
  17.         f.add(btn);  
  18.         addListener();  
  19.         f.setVisible(true);  
  20.     }  
  21.     private void addListener()  
  22.     {  
  23.         f.addWindowListener(new WindowAdapter(){  
  24.             public void windowClosing(WindowEvent e)  
  25.             {  
  26.                 System.exit(0);  
  27.             }  
  28.         });  
  29.         btn.addActionListener(new ActionListener(){  
  30.             public void actionPerformed(ActionEvent e)  
  31.             {  
  32.                 System.exit(0);  
  33.             }  
  34.         });  
  35.     }  
  36.     public static void main(String[] args)   
  37.     {  
  38.         new FrameDemo().createMyFrame();  
  39.     }  
  40. }  
----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值