9.1.1
JApplet
由于所有的Swing GUI组件都应该包含在JApplet小程序
中,且javax.Swing.JApplet是java.applet.Applet的子类,所以本章
主要介绍javax.Swing的“J组件”,应用程序均以JApplet小程序为
例。JApplet的使用与Applet小程序相似,它们与HTML文件的
配合没有什么差别,差别仅在默认布局策略与个别方法的使用
上,这将在讲述到有关内容时加以讨论。
9.1.2 Swing
中常用的包
由于Swing功能相当强大且复杂,考虑到功能分解的原
则,Java系统将Swing按不同功能分为表9.1所示的若干个包,
它们分别针对于不同的组件及事件。
表9.1 Swing
中常用的包
包 名说 明
javax.swing 最常用的包,包含了各种Swing组件的类
javax.swing.border 包含与Swing组件外框有关的类
lorchooser 针对Swing调版组件(JColorChooser)设计的类
javax.swing.event 处理由Swing组件产生的事件
javax.swing.filechooser 包含针对Swing文件选择对话框(JFileChooser)所设计的类
javax.swing.plaf 处理Swing组件外观的相关类
javax.swing.table 针对Swing组件表格(JTable)所设计的类
包含与Swing文字组件相关的类
html
html.parser
tf
针对Swing树状元素(JTree)所设计的类
javax.swing.undo 提供Swing文字组件的Redo与Undo功能
表9.1 Swing
中常用的包
9.1.3
常用组件的继承关系
由于本章所述组件所使用的成员方法主要是继承其直接父类
或更高层父类的成员方法,为了正确地使用这些组件,有必要
了解每个组件的继承关系。本章所述组件的继承关系如下:
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JLabel
javax.swing.JTextField
javax.swing.JTextArea
javax.swing.JList
javax.swing.JComboBox
javax.swing.AbstractButton
javax.swing.JButton
javax.swing.JToggleButton
javax.swing.JCheckBox
javax.swing. JRadioButton
9.2
事件响应原理
设计和实现图形用户界面的工作主要有两个:一是创建组
成界面的各种成分和元素,指定它们的属性和位置关系,根据
具体需要排列它们,从而构成完整的图形用户界面的物理外
观;二是定义图形用户界面的事件和各界面元素对不同事件的
响应,从而实现图形用户界面与用户的交互功能。
图形用户界面之所以能为广大用户所喜爱并最终成为事实
上的标准,很重要的一点就在于图形用户界面的事件驱动机
制,它可以根据产生的事件来决定执行相应的程序段。事件
(event)代表了某对象可执行的操作及其状态的变化。例如,在
图形用户界面中,用户可以通过移动鼠标对特定图形界面元素
进行单击、双击等操作来实现输入/输出操作。
9.2.1
委托事件模型
Java采用委托事件模型来处理事件。委托事件模型的特点是
将事件的处理委托给独立的对象,而不是组件本身,从而将使用
者界面与程序逻辑分开。整个“委托事件模型”由产生事件的对象
(事件源)、事件对象及监听者对象之间的关系所组成。
产生事件的对象会在事件产生时,将与该事件相关的信息封
装在一个称之为“事件对象”的对象中,并将该对象传递给监听者
对象,监听者对象根据该事件对象内的信息决定适当的处理方式。
监听者对象要收到事件发生的通知,必须在程序代码中向产生事
件的对象注册,当事件产生时,产生事件的对象就会主动通知监
听者对象,监听者对象就可以根据产生该事件的对象来决定处理
事件的方法。
监听者对象(listener)就是用来处理事件的对象。监听者对象
等候事件的发生,并在事件发生时收到通知。
9.2.2 Swing
组件的事件及监听者
不同事件源上发生的事件种类不同,不同的事件由不同的
监听者处理。表9.2列出了Swing中各种组件可激发的事件及事
件监听者之间的对应关系。表9.3列出了Swing提供的各事件监
听者与各事件类成员方法之间的关系。请读者务必注意:对应
不同事件需要不同的事件监听者,而每个事件监听者都有相应
的成员方法,我们处理事件的程序代码要写在对应的成员方法
体中。
表9.2 Swing
中组件、事件及事件监听者之间的对应关系
组 件
可激发的事件
(Event) 事件监听者(EventListener)
AbstractButton
(JButton,JToggleButton,
JCheckBox,JRadioButton
)
ActionEvent
ChangeEvent
ItemEvent
ActionListener
ChangeListener
ItemListener
JFileChooser ActionEvent ActionListener
JTextField
JPasswordField
ActionEvent
CaretEvent
DocumentEvent
UndoableEvent
ActionListener
CaretListener
DocumentListener
UndoableListener
表9.2 Swing
中组件、事件及事件监听者之间的对应关系
JTextArea
CaretEvent
DocumentEvent
UndoableEvent
CaretListener
DocumentListener
UndoableListener
JTextPane
JEditorPane
CaretEvent
DocumentEvent
UndoableEvent
HyperlinkEvent
CaretListener
DocumentListener
UndoableListener
HyperlinkListener
JComboBox ActionEvent
ItemEvent
ActionListener
ItemListener
JList ListSelectionEvent
ListDataEvent
ListSelectionListener
ListDataListener
表9.2 Swing
中组件、事件及事件监听者之间的对应关系
JMenuItem
ActionEvent
ChangeEvent
ItemEvent
MenuKeyEvent
MenuDragMouseEvent
ActionListener
ChangeListener
ItemListener
MenuKeyListener
MenuDragMouseListener
JMenu MenuEvent MenuListener
JPopupMenu PopupMenuEvent PopupMenuListener
JProgressBar ChangeEvent ChangeListener
JSlider ChangeEvent ChangeListener
JScrollBar AdjustmentEvent AdjustmentListener
表9.2 Swing
中组件、事件及事件监听者之间的对应关系
JTable
ListSelectionEvent
TableModeEvent
TableColumnModelEvent
CellEditorEvent
ListSelectionListener
TableModeListener
TableColumnModelListener
CellEditorListener
JTabbedPane ChangeEvent ChangeListener
JTree
TreeSelectionEvent
TreeExpansionEvent
TreeWillExpandEvent
spring framework组件
TreeModeEvent
TreeSelectionListener
TreeExpansionListener
TreeWillExpandListener
TreeModeListener
JTimer ActionEvent ActionListener
表9.3 Swing
提供的各监听者与各事件类成员方法之间的关系
事件监听者成 员 方 法
CaretListener caretUpdate(CaretEvent e)
CellEditorListener editingCanceled(ChangeEvent e)
editingStopped(ChangeEvent e)
ChangeListener stateChanged(ChangeEvent e)
DocumentListener
changedUpdate(DocumentEvent e)
insertUpdate(DocumentEvent e)
removeUpdate(DocumentEvent e)
HyperlinkListener hyperlinkUpdate(HyperlinkEvent e)
表9.3 Swing
提供的各监听者与各事件类成员方法之间的关系
ListDataListener
contentsChanged(ListDataEvent e)
intervalAdded(ListDataEvent e)
intervalRemoved(ListDataEvent e)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。