首页 > 代码库 > Java添加事件的四种方式

Java添加事件的四种方式

Java添加事件的几种方式(转载了codebrother的文章,做了稍微的改动)

  1 /**
  2  * Java事件监听处理——自身类实现ActionListener接口,作为事件监听器
  3  *
  4  * @author codebrother
  5  */
  6 class EventListener1 extends JFrame implements ActionListener {
  7     private JButton btBlue, btDialog;
  8 
  9     public EventListener1() {
 10         setTitle("Java GUI 事件监听处理");
 11         setBounds(100, 100, 500, 350);
 12         setLayout(new FlowLayout());
 13         btBlue = new JButton("蓝色");      
 14         btDialog = new JButton("弹窗");
 15         
 16         // 将按钮添加事件监听器
 17         btBlue.addActionListener(this);
 18         btDialog.addActionListener(this);
 19 
 20         add(btBlue);
 21         add(btDialog);
 22 
 23         setVisible(true);
 24         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 25     }
 26     // ***************************事件处理***************************
 27     @Override
 28     public void actionPerformed(ActionEvent e) {
 29         if (e.getSource() == btBlue) {
 30             Container c = getContentPane();
 31             c.setBackground(Color.BLUE);
 32          }
 33         else if (e.getSource() == btDialog) {
 34             JDialog dialog = new JDialog();
 35             dialog.setBounds(300, 200, 400, 300);
 36             dialog.setVisible(true);
 37         }
 38     }
 39 
 40 }
 41 
 42 /**
 43  * Java事件监听处理——内部类处理
 44  *
 45  * @author codebrother
 46  */
 47 
 48 class EventListener3 extends JFrame {
 49     private JButton btBlue, btDialog;
 50 
 51     // 构造方法
 52     public EventListener3() {
 53         setTitle("Java GUI 事件监听处理");
 54         setBounds(100, 100, 500, 350);
 55         setLayout(new FlowLayout());
 56         btBlue = new JButton("蓝色");
 57         btDialog = new JButton("弹窗");
 58         // 添加事件监听器对象(面向对象思想)
 59         btBlue.addActionListener(new ColorEventListener());
 60         btDialog.addActionListener(new DialogEventListener());
 61 
 62         add(btBlue);
 63         add(btDialog);
 64         setVisible(true);
 65         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 66     }
 67     // 内部类ColorEventListener,实现ActionListener接口
 68     class ColorEventListener implements ActionListener {
 69         @Override
 70         public void actionPerformed(ActionEvent e) {
 71             Container c = getContentPane();
 72             c.setBackground(Color.BLUE);
 73          }
 74     }
 75     // 内部类DialogEventListener,实现ActionListener接口
 76     class DialogEventListener implements ActionListener {
 77         @Override
 78         public void actionPerformed(ActionEvent e) {
 79             JDialog dialog = new JDialog();
 80             dialog.setBounds(300, 200, 400, 300);
 81             dialog.setVisible(true);
 82         }
 83     }
 84 
 85 }
 86 
 87 
 88 
 89 /**
 90  * Java事件监听处理——匿名内部类处理
 91  *
 92  * @author codebrother
 93  */
 94 class EventListener2 extends JFrame {
 95     private JButton btBlue, btDialog;
 96 
 97     public EventListener2() {
 98         setTitle("Java GUI 事件监听处理");
 99         setBounds(100, 100, 500, 350);
100         setLayout(new FlowLayout());
101 
102         btBlue = new JButton("蓝色");
103         btDialog = new JButton("弹窗");
104         
105         // 添加事件监听器(此处即为匿名类)
106         btBlue.addActionListener(new ActionListener() {
107             // 事件处理
108             @Override
109             public void actionPerformed(ActionEvent e) {
110                 Container c = getContentPane();
111                 c.setBackground(Color.BLUE);
112              }
113         });
114         
115         // 并添加事件监听器   
116         btDialog.addActionListener(new ActionListener() {
117             @Override
118             public void actionPerformed(ActionEvent e) {
119                 JDialog dialog = new JDialog();
120                 dialog.setBounds(300, 200, 400, 300);
121                 dialog.setVisible(true);
122             }
123         });
124 
125         add(btBlue);
126         add(btDialog);
127         setVisible(true);
128         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
129     }
130 
131 }
132 
133 /**
134  * Java事件监听处理——外部类处理
135  *
136  * @author codebrother
137  */
138 class EventListener4 extends JFrame {
139     private JButton btBlue, btDialog;
140 
141     public EventListener4() {
142         setTitle("Java GUI 事件监听处理");
143         setBounds(100, 100, 500, 350);
144         setLayout(new FlowLayout());
145         btBlue = new JButton("蓝色");
146         btDialog = new JButton("弹窗");
147         // 将按钮添加事件监听器
148         btBlue.addActionListener(new ColorEventListener(this));
149         btDialog.addActionListener(new DialogEventListener());
150 
151         add(btBlue);
152         add(btDialog);
153         setVisible(true);
154         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
155     }
156 
157 }
158 // 外部类ColorEventListener,实现ActionListener接口
159 class ColorEventListener implements ActionListener {
160     private EventListener4 el;
161     ColorEventListener(EventListener4 el) {
162         this.el = el;
163     }
164     @Override
165     public void actionPerformed(ActionEvent e) {
166         Container c = el.getContentPane();
167         c.setBackground(Color.BLUE);
168      }
169 }
170 // 外部类DialogEventListener,实现ActionListener接口
171 class DialogEventListener implements ActionListener {
172     @Override
173     public void actionPerformed(ActionEvent e) {
174         JDialog dialog = new JDialog();
175         dialog.setBounds(300, 200, 400, 300);
176         dialog.setVisible(true);
177     }
178 }
179 
180 public class ActionListenerTest
181 {
182     public static void main(String args[])
183     {
184         new EventListener2();
185     }
186 }