---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
用户与计算机交互有两种方式:命令行,图形化界面
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,就可以创建一个监听器,在监听器中复写父类方法就可以处理事件。
class MyWin extends WindowAdapter { public void windowClosing(WindowEvent e) <span style="white-space:pre"> </span>{ System.exit(0); <span style="white-space:pre"> </span>} }
注册监听器到事件源:f.addWindowListener(new MyWin());
通过关闭窗体示例了解到,想要知道那个组件具备什么样的特有监听器,需要查看该组件对象的功能。
例如Button,通过查阅API,发现按钮有一个方法addActionListener(ActionListener al)方法,通过该方法可以给按钮添加监听器。ActionListener监听器接口只有一个方法,它是少数(三个)没有适配器(就像WindowListener的WindowAdapter)的监听器接口,实现那个方法就可以了。示例:
import java.awt.*; import java.awt.event.*; class FrameDemo { private Frame f = null; private Button btn = null; FrameDemo() { f = new Frame("我的窗口"); btn = new Button("按钮"); } public void createMyFrame() { f.setBounds(200,200,400,400); f.setLayout(new FlowLayout()); f.add(btn); addListener(); f.setVisible(true); } private void addListener() { f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } }); btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); } public static void main(String[] args) { new FrameDemo().createMyFrame(); } }
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------