Source Event Event Listener -------------------------------------------------------------------------------------------------------------- AbstractButton ActionEvent ActionListener (JButton,JtoggleButton, ChangeEvent ChangeListener JCheckBox,JRadioButton ItemEvent ItemListener ------------------------------------------------------------------------------------------------------- JTextField ActionEvent ActionListener JpasswordField CaretEvent CaretListener DocumentEvent DocumentListener UndoableEvent UndoableListener ------------------------------------------------------------------------------------------------------- JTextArea CaretEvent CaretListener DocumentEvent DocumentListener UndoableEvent UndoableListener ------------------------------------------------------------------------------------------------------- JTextPane CaretEvent CaretListener JEditorPane DocumentEvent DocumentListener UndoableEvent UndoableListener HyperlinkEvent HyperlinkListener ------------------------------------------------------------------------------------------------------- JComboBox ActionEvent ActionListener ItemEvent ItemListener ------------------------------------------------------------------------------------------------------- JList ListSelectionEvent ListSelectionListener ListDataEvent ListDataListener ------------------------------------------------------------------------------------------------------- JFileChooser ActionEvent ActionListener ------------------------------------------------------------------------------------------------------- JMenuItem ActionEvent ActionListener ChangeEvent ChangeListener ItemEvent ItemListener MenuKeyEvent MenuKeyListener MenuDragMouseEvent MenuDragMouseListener ------------------------------------------------------------------------------------------------------- JMenu MenuEvent MenuListener ------------------------------------------------------------------------------------------------------- JPopupMenu PopupMenuEvent PopupMenuListener ------------------------------------------------------------------------------------------------------- JProgressBar ChangeEvent ChangeListener ------------------------------------------------------------------------------------------------------- JSlider ChangeEvent ChangeListener ------------------------------------------------------------------------------------------------------- JScrollBar AdjustmentEvent AdjustMentListener ------------------------------------------------------------------------------------------------------- JTable ListSelectionEvent ListSelectionListener TableModeEvent TableModeListener TableColumnModelEvent TableColumnModeListener CellEditorEvent CellEditorListener ------------------------------------------------------------------------------------------------------- JTabbedPane ChangeEvent ChangeListener ------------------------------------------------------------------------------------------------------- JTree TreeSelectionEvent TreeSelectionListener TreeExpansionEvent TreeExpansionListener TreeWillExpandEvent TreeWillExpandListener TreeModeEvent TreeModeListener ------------------------------------------------------------------------------------------------------- JTimer ActionEvent ActionListener -------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------- Event Listener ComponentEvent ComponentListener ContainerEvent ConatainerListener FocusEvent FocusListener KeyEvent KeyListener MouseEvent MouseListener MouseMotionEvent MouseMotionListener WindowEvent WindowListener
ComponentEvent:主要处理组件大小的改变,位置的改变,或是可见与不可见状态(hidden or visible)等。
ContainerListener:主要在处理组件的加入或移出容器。
FocusListener:主要在处理焦点的取得或移开焦点等操作。
MouseListener:主要就是在处理鼠标是否在某个组件上,是否按下鼠标键,是否离开某个组件等操作,主要针对鼠标按键与位置 作处理。
MouseMotionListener:主要就是在追踪鼠标的位置,如(X,Y)坐标的位置,主人是针对鼠标坐标与拖曳操作作处理。
WindowListener:主要在处理窗口的所有操作。如处理active窗口或是de-active窗口,处理窗口的最大、最小化,处理窗口的关闭 、打开、退出等。
以上所述的每种EventListener都是一种interface,里面只有定义这个EventListener的interface,然后在这个类中,把要处理事 件的程序代码写在此interface的方法中。这是处理事件的标准操作,当然还有其他编写模式,如:利用inner class的匿名类方法 ,就可以不用在class后面加上implements EventListener的表示法,或是利用Adapter类,就不用一一将interface中的每种方法都 实现。
让我们来了解一下,每一种EventListener的interface到底提供了哪几种方法要我们实现(Implement)!我们把事件区分成是由 Swing或是AWT所引发:
Swing EventListener Method ---------------------------------------------------------------------------------------------------------------- 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) -------------------------------------------------------------------------------------------------------------- ListDataListener contentsChanged(ListdataEvent e) intervalAdded(ListDataEvent e) intervalRemoved(ListDataEvent e) -------------------------------------------------------------------------------------------------------------- ListSelectionListener valueChanged(ListSelectionEvent e) -------------------------------------------------------------------------------------------------------------- MenuDragMouseListener menuDragMouseDragged(MenuDragMouseEvent e) menuDragMouseEntered(menuDragMouseEvent e) menuDragMouseExited(MenuDragMouseEvent e) menuDragMouseReleased(MenuDragMouseEvent e) -------------------------------------------------------------------------------------------------------------- MenuKeyListener menuKeyPressed(MenuKeyEvent e) menuKeyReleased(MenuKeyEvent e) menuKeyTyped(MenuKeyEvent e) -------------------------------------------------------------------------------------------------------------- MenuListener menuCanceled(MenuEvent e) menuDeselected(MenuEvent e) menuSelected(MenuEvent e) -------------------------------------------------------------------------------------------------------------- PopupMenuListener popupMenuCanceled(PopupMenuEvent e) popupMenuWillBecomeInvisible(PopupMenuEvent e) popupMenuWillBecomeVisible(PopupMenuEvent e) -------------------------------------------------------------------------------------------------------------- TableColumnModelListener columnAdded(TableColumnModelEvent e) columnMarginChanged(ChangeEvent e) columnMoved(TableColumnModelEvent e) columnRemoved(TableColumnModelEvent e) columnSelectionChanged(ListSelectionEvent e) -------------------------------------------------------------------------------------------------------------- TableModelListener tableChanged(TableModelEvent e) -------------------------------------------------------------------------------------------------------------- TreeExpansionListener treeCollapsed(TreeExpansionEvent event) treeExpanded(TreeExpansionEvent event) --------------------------------------------------------------------------------------------------------------- TreeModelListener treeNodesChanged(TreeModelEvent e) treeNodesInserted(TreeModelEvent e) treeNodesRemoved(TreeModelEvent e) treeStructureChanged(TreeModelEvent e) --------------------------------------------------------------------------------------------------------------- TreeSelectionListener valueChanged(TreeSelectionEvent e) --------------------------------------------------------------------------------------------------------------- TreeWillExpandListener treeWillCollapse(TreeExpansionEvent event) treeWillExpand(TreeExpansionEvent event) --------------------------------------------------------------------------------------------------------------- UndoableEditListener undoableEditHappened(UndoableEditEvent e) ---------------------------------------------------------------------------------------------------------------
AWT EventListener Method -------------------------------------------------------------------------------------------------------------- ActionListener actionPerformed(ActionEvent e) -------------------------------------------------------------------------------------------------------------- AdjustmentListener adjustmentValueChanged(AdjustmentEvent e) -------------------------------------------------------------------------------------------------------------- ComponentListener componentHidden(ComponentEvent e) componentMoved(ComponentEvent e) componentResized(ComponentEvent e) componentShown(ComponentEvent e) -------------------------------------------------------------------------------------------------------------- ContainerListener componentAdded(ContainerEvent e) componentRemoved(ContainerEvent e) -------------------------------------------------------------------------------------------------------------- FocusListener focusGained(FocusEvent e) focusLost(FocusEvent e) -------------------------------------------------------------------------------------------------------------- ItemListener itemStateChanged(ItemEvent e) -------------------------------------------------------------------------------------------------------------- KeyListener keyPressed(KeyEvent e) keyReleased(KeyEvent e) keyTyped(KeyEvent e) -------------------------------------------------------------------------------------------------------------- MouseListener mouseClicked(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mousePressed(MouseEvent e) mouseReleased(MouseEvent e) -------------------------------------------------------------------------------------------------------------- MouseMotionListener mouseDragged(MouseEvent e) mouseMoved(MouseEvent e) -------------------------------------------------------------------------------------------------------------- WindowListener windowActivated(WindowEvent e) windowClosed(WindowEvent e) windowClosing(WindowEvent e) windowDeactivated(WindowEvent e) windowDeiconified(WindowEvent e) windowIconified(WindowEvent e) windowOpened(WindowEvent e) ---------------------------------------------------------------------------------------------------------------
Adapter 对应的EventListener --------------------------------------------------------------------------------------------------------------- java.awt.event.ComponentAdapter ComponentListener java.awt.event.ContainerAdapter ContainerListener java.awt.event.FocusAdapter FocusListener java.awt.event.KeyAdapter KeyListener java.awt.event.MouseAdapter MouseListener java.awt.event.MouseMotionAdapter MouseMotionListener java.awt.event.WindowAdapter WindowListener ---------------------------------------------------------------------------------------------------------------
在java中提供两个方法让你知道到底是哪个组件触发了事件,那就是getSource()与getActionCommand();getActionCommand() 方法是ActionEvent类所提供,而getSource()方法是EventObject类所提供,但ActionEvent类继承了EventObject类,因此这两个 方法ActionEvent都可以使用,看下面的例子就知道了:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class EventDemo5 extends WindowAdapter implements ActionListener { JButton b1 = null; JButton b2 = null; public EventDemo5() { JFrame f = new JFrame("EventDemo5"); Container contentPane = f.getContentPane(); contentPane.setLayout(new GridLayout(1, 2)); b1 = new JButton("按我有声音喔"); b2 = new JButton("按我可开新窗口"); b1.addActionListener(this); b2.addActionListener(this); contentPane.add(b1); contentPane.add(b2); f.pack(); f.show(); f.addWindowListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b1)// getSource判断哪个按钮被按下了。 Toolkit.getDefaultToolkit().beep(); if (e.getSource() == b2) { JFrame newF = new JFrame("新窗口"); newF.setSize(200, 200); newF.show(); } } public void windowClosing(WindowEvent e) { System.exit(0); } public static void main(String args[]) { new EventDemo5(); } }
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class EventDemo6 extends WindowAdapter implements ActionListener { JButton b1 = null; JButton b2 = null; public EventDemo6() { JFrame f = new JFrame("EventDemo6"); Container contentPane = f.getContentPane(); contentPane.setLayout(new GridLayout(1, 2)); b1 = new JButton("按我有声音喔"); b2 = new JButton("按我可开新窗口"); b1.addActionListener(this); b2.addActionListener(this); contentPane.add(b1); contentPane.add(b2); f.pack(); f.show(); f.addWindowListener(this); } public void actionPerformed(ActionEvent e) { if ((e.getActionCommand()).equals("按我有声音喔")) // getActionCommand()方法会返回按钮上的文字字符串。 Toolkit.getDefaultToolkit().beep(); if ((e.getActionCommand()).equals("按我可开新窗口")) { JFrame newF = new JFrame("新窗口"); newF.setSize(200, 200); newF.show(); } } public void windowClosing(WindowEvent e) { System.exit(0); } public static void main(String args[]) { new EventDemo6(); } }