用户与计算机进行交换的方式有两种:
GLI:Command lin User Interface(命令行用户接口),也就是常见的dos窗口,它需要记住一些常用的命令,操作不直观方便。
GUI:Graphical User Interface(图形用户接口),用图形的方式,来显示计算机操作的界面,这样更方便直观。
这两种交换方式就对应两种交互界面:命令行界面和图形化界面。
Java为GUI提供的对象都在java.awt和javax.swing这两个包中。
Frame
Frame是windows的子类,它启动时,要通过setVisiable(true)方法来启动窗口。
GUI中,启动一个窗体就是启动一个前台线程,虽然main函数运行完了,但前台线程没结束,所以程序也就不会结束。
布局
容器中的组件的排放方式,就是布局。
常见的布局管理器:•
FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。
BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。
GridLayout(网格布局管理器):规则的矩阵。
CardLayout(卡片布局管理器):选项卡。
GridBagLayout(网格包布局管理器):非规则的矩阵。
事件监听
事件监听机制由四部分组成:事件源(组件)、事件(Event)、监听器(Listener)和事件处理(引发事件后的处理方式)。
事件源:就是java.awt和javax.swing包中的GUI组件。
事件:每个事件源都有自己的特有事件和共性事件(鼠标事件和键盘事件即是它们的共性事件)。
监听器:将可以触发某一事件的动作(不止一个)都封装在了监听器中。
事件处理:事件源、事件和监听器在java中已经定义好了,直接获取其对象来用就可以了,我们要做的是对产生的动作进行处理。
Action事件
按钮对应的是ActionEvent事件,ActionEvent对应的是ActionListener监听器。只用按钮活动,就能执行,而键盘和鼠标都能让按钮活动。所以,如果对按钮处理的动作只有一种,最好使用ActionListener,因为鼠标键盘都会触发它。
ActionListener监听器接口只用一个方法,所以没有相应的Adapter,它是三个没有配适器的监听器接口之一。
import java.swing.*; class FrameDemo { private Frame f; private Button but; FrameDemo() { init(); } public void init() { f= new Frame("day22-MyFrame"); f.setBounds(300,100,600,500); f.setLayout(new FlowLayout()); but = new Button("my button"); f.add(but); myEvent(); f.setVisible(true); } public void myEvent() { f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("关闭窗口"); System.exit(0);//这个方法的 关闭的是虚拟机,退出虚拟机,当然就退出了程序 } }); but.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("退出"); System.exit(0); } }); } public static void main(String[] args) { new FrameDemo(); } }