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();
}
}