- Java GUI组件有Swing包和AWT包,Swing相比于AWT更灵活,更少使用本地的GUI资源,因此现在更多的使用Swing GUI组件。
- GUI类可分为三组:容器类、辅助类和组件类。容器类如JFrame、JPanel和JApplet等,用来包含其他组件。辅助类如Graphics、Color、Font等类,是组件和容器用来操作(绘制和放置)对象的。组件类,JComponent的子类,顾名思义,就是各种组件。
- JComponent类是一个抽象类,是所有Swing组件类的父类。Swing容器类包括:
Container:用来组织组件,根据要求,布局管理器把组件定位放置在容器上。
JFrame:不能包含在其他窗口内的窗口,包含其他Swing用户界面组件的容器。
JDialog:弹出式信息窗口,一般用于接受用户附加信息货公告事件的临时窗口。
JApplet:Applet的子类。
JPanel:存放界面组件的不可见容器。可以嵌套。也可以作为画布来画图。
框架、面板和applet都是Container的实例。 - GUI辅助类:
Graphics:抽象类,提供一个图形环境,用于绘制字符串、直线和简单的几何图形。
还有Color、Font、Dimension、LayoutManager等。 - 布局管理器:使用LayoutManager类创建,每一个布局管理器类都实现了LayoutManager接口。基本的三个布局管理器有:FlowLayout、GridLayout和BorderLayout。
- 创建GUI应用程序的较好方式:扩展JFrame类,在构造方法中创建用户界面,main方法创建实例并显示框架。
- container.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));隐匿创建了一个FlowLayout对象。等价于:FlowLayout layout = new FlowLayout(FlowLayout.LEFT,10,20); contaner.setLayout(layout);。显式引用是没有必要的,因为该对象并不在主类中使用到。
- Swing组件使用paintComponent方法绘制图形,当组件第一次显示或重新显示的时候,painComponent方法会被自动调用来绘制图形环境。repaint方法会引起paintComponent的调用,一般情况下,如果要显示新的东西,就要调用repain。
- 事件驱动程序:事件:程序发出了某种信号,如点击按钮、移动鼠标、按下键盘等。一个事件是事件类EventObject的实例。在其上发生事件的组件较事件的源对象,如点击按钮,按钮就是这个事件的源对象。可以使用EventObject类中的实例方法getSource()获得事件的源对象。EventObject类的子类处理特定类型的事件,如按钮事件、移动鼠标、按键、窗口事件等等。
- 事件的监听、注册和处理:
Java采用事件委托处理模型来处理事件:源对象的外部用户行为触发事件,然后监听该事件的对象接收事件,后一个对象成为监听器。一个对象成为某个事件的监听器要两个条件:1)监听类必须实现相应的事件监听器接口:每一种类型的事件都有相应的监听器接口,通常xEvent对应接口为xListener,监听器接口包含处理事件的方法,这种方法成为处理器。2)监听对象必须由源对象注册: 注册方法为addXListener。一个源对象可能对多种类型的事件起作用,因此源对象拥有一个监听器列表,按照接收到的事件从列表中选择已注册的监听器处理。 - ActionEvent 对象的getSource()和getActionCommand()的区别:
getSource()返回当前动作所指向的对象,包含对象的所有信息;
getAtionCommand()返回当前动作指向对象的名称。 - Swing GUI组件:Component类是所有界面组件和容器的根类。Swing组件除了JFame、JApplet和JDialog等一小部分,其他都是JComponent的子类。