Swing 元件事件模型採用「事件源 — 事件物件 — 事件監聽器」三要素。下表整理常用 Swing 元件所觸發的事件類別與對應的監聽器介面,方便開發時快速查閱。
| 事件源 (Component) | 事件類別 (Event) | 監聽器介面 (Listener) |
|---|---|---|
| AbstractButton (JButton, JToggleButton, JCheckBox, JRadioButton) | ActionEvent, ChangeEvent, ItemEvent | ActionListener, ChangeListener, ItemListener |
| JTextField | ActionEvent | ActionListener |
| JPasswordField | CaretEvent, DocumentEvent, UndoableEditEvent | CaretListener, DocumentListener, UndoableEditListener |
| JTextArea | CaretEvent, DocumentEvent, UndoableEditEvent | CaretListener, DocumentListener, UndoableEditListener |
| JTextPane, JEditorPane | CaretEvent, DocumentEvent, UndoableEditEvent, HyperlinkEvent | CaretListener, DocumentListener, UndoableEditListener, HyperlinkListener |
| JComboBox | ActionEvent, ItemEvent | ActionListener, ItemListener |
| JList | ListSelectionEvent, ListDataEvent | ListSelectionListener, ListDataListener |
| JFileChooser | ActionEvent | ActionListener |
| 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 |
| JTable | ListSelectionEvent, TableModelEvent, TableColumnModelEvent, CellEditorEvent | ListSelectionListener, TableModelListener, TableColumnModelListener, CellEditorListener |
| JTabbedPane | ChangeEvent | ChangeListener |
| JTree | TreeSelectionEvent, TreeExpansionEvent, TreeWillExpandEvent, TreeModelEvent | TreeSelectionListener, TreeExpansionListener, TreeWillExpandListener, TreeModelListener |
| javax.swing.Timer | ActionEvent | ActionListener |
使用提醒:
KeyListener、MouseListener 等。btn.addActionListener(e -> doSomething());。