- 论坛徽章:
- 0
|
小弟不才!问个事件共享问题!
事件是内置的,不用添加。添加的是EventListener。你可以用同一个eventListener来响应这两个事件。也可以让不同的eventlistener把处理的工作委托给同一个方法做。我觉得后一种方法好一些。
- import java.awt.AWTEvent;
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JTextField;
- public class EventDelegate {
- JFrame jf = null;
- public EventDelegate() {
- jf = new JFrame();
- jf.setSize(300, 200);
- jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- jf.getContentPane().add(getButton(), BorderLayout.SOUTH);
- jf.getContentPane().add(getTextField(), BorderLayout.CENTER);
- }
- private Component getTextField() {
- JTextField jtf = new JTextField();
- jtf.addKeyListener(new KeyAdapter() {
- public void keyTyped(KeyEvent ke) {
- handler(ke);
- }
- });
- return jtf;
- }
- protected void handler(AWTEvent e) {
- System.out.println(e);
- }
- private Component getButton() {
- JButton jb = new JButton("Click Me!");
- jb.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent arg0) {
- handler(arg0);
- }
- });
- return jb;
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- EventDelegate ed = new EventDelegate();
- ed.test();
- }
- private void test() {
- jf.show();
- }
- }
复制代码 |
|