JAVA監聽器新增的四種方式(自身、外部類、內部類、匿名類)
阿新 • • 發佈:2019-01-09
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ThisClassEvent extends JFrame implements ActionListener{ public ThisClassEvent(){ setLayout(new FlowLayout()); JButton btn=new JButton("ok"); add(btn); btn.addActionListener(this); } public void actionPerformed (ActionEvent e){ System.out.println("The OK button is clicked"); } public static void main(String args[]){ ThisClassEvent frame = new ThisClassEvent(); frame.setTitle("自身類作為事件監聽器"); frame.setLocationRelativeTo(null); // Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(280, 100); frame.setVisible(true); new ThisClassEvent(); } } import java.awt.*; import java.awt.event.*; import javax.swing.*; public class OuterClassEvent extends JFrame{ public OuterClassEvent(){ setLayout(new FlowLayout()); JButton btn=new JButton("ok"); add(btn); OuterClass btListener=new OuterClass(); btn.addActionListener(btListener); } public static void main(String args[]){ OuterClassEvent frame = new OuterClassEvent(); frame.setTitle("外部類作為事件監聽器"); frame.setLocationRelativeTo(null); // Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(280, 100); frame.setVisible(true); new ThisClassEvent(); } } class OuterClass implements ActionListener{ public void actionPerformed(ActionEvent e){ System.out.println("The OK button is clicked"); } } import java.awt.*; import java.awt.event.*; import javax.swing.*; class InnerClassEvent extends JFrame{ public InnerClassEvent(){ setLayout(new FlowLayout()); JButton btn=new JButton("ok"); add(btn); OuterClass btListener=new OuterClass(); btn.addActionListener(btListener); } class InnerClass implements ActionListener{ public void actionPerformed (ActionEvent e){ System.out.println("The OK button is clicked"); } } public static void main(String args[]){ InnerClassEvent frame = new InnerClassEvent(); frame.setTitle("內部類作為事件監聽器"); frame.setLocationRelativeTo(null); // Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(280, 100); frame.setVisible(true); new ThisClassEvent(); } } import java.awt.*; import java.awt.event.*; import javax.swing.*; class AnonymousEvent extends JFrame{ public AnonymousEvent(){ setLayout(new FlowLayout()); JButton btn=new JButton("ok"); add(btn); btn.addActionListener( new ActionListener(){ //匿名內部類作為引數,new 一個lisenter實際上是建立了一個實現了這個listener的類 public void actionPerformed(ActionEvent e){ System.out.println("The OK button is clicked"); } } ); } public static void main(String args[]){ AnonymousEvent frame = new AnonymousEvent(); frame.setTitle("匿名內部類作為事件監聽器"); frame.setLocationRelativeTo(null); // Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(280, 100); frame.setVisible(true); new ThisClassEvent(); } }