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的事件 |


沒有留言:
張貼留言