import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; class Frame3 extends JFrame { private JPanel contentPane; public Frame3(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,250,200); setTitle("事件處理視窗"); contentPane = new JPanel(); setContentPane(contentPane); contentPane.setLayout(null); JButton button = new JButton("事件來源"); button.addActionListener( //1. 將事件來源,註冊傾聽者 new ActionListener(){ @Override //2. 傳送事件給已註冊的傾聽者 public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JOptionPane.showMessageDialog(null, "處理事件"); } } ); button.setBounds(100, 50, 100, 25); contentPane.add(button); setVisible(true); } } public class FrameEvent { public static void main(String[] args) { Frame3 frame3 = new Frame3(); } }執行結果
按下按鈕時
這程式可改寫成如下:
class Frame3 extends JFrame implements ActionListener{ private JPanel contentPane; public Frame3(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,250,200); setTitle("事件處理視窗"); contentPane = new JPanel(); setContentPane(contentPane); contentPane.setLayout(null); JButton button = new JButton("事件來源"); button.addActionListener(this); //1. 將事件來源,註冊傾聽者 button.setBounds(100, 50, 100, 25); contentPane.add(button); setVisible(true); } public void actionPerformed(ActionEvent e){ //2. 傳送事件給已註冊的傾聽者 JOptionPane.showMessageDialog(null, "處理事件"); } }事件來源、類別名稱
事件來源 | 事件類別名稱 | 說明 |
---|---|---|
Mouse | MouseEvent | Mouse的事件 |
Keyboard | KeyEvent | Key的事件 |
Button | ActionEvent | Button的事件 |
Checkbox | ItemEvent | Item的事件 |
Choice | ItemEvent | Item的事件 |
List | ActionEvent和ItemEvent | Action、Item的事件 |
MenuItem | ActionEvent和ItemEvent | MAction、Item的事件 |
Scrollbar | AdjustmentEvent | Adjustment的事件 |
TextField | TextEvent | Text的事件 |
TextArea | TextEvent | Text的事件 |
Window | WindowEvent | Window的事件 |
沒有留言:
張貼留言