[问题] 可以省略implements ActionListener?

楼主: dharma (達)   2015-07-23 22:29:24
下面是书上的范例
是改写成匿名类别来实作倾听者
不太懂为什么这种写法
为何可以省略“implements ActionListener”
thank
import javax.swing.*;
import java.awt.event.*;
public class AnonymousListener extends JFrame {
int act = 0; // 用来记录按钮被次数的变量
public static void main(String[] args) {
AnonymousListener test = new AnonymousListener();
}
// 用建构方法建立元件、将元件加入视窗、显示视窗
public AnonymousListener() {
setTitle("Listener 示范");
JButton mybutton = new JButton("换个标题");
// addActionListener() 的参数为匿名类别物件
mybutton.addActionListener(
// 以下建立的匿名类别物件为按钮物件的倾听者
new ActionListener() {
public void actionPerformed(ActionEvent e) {
act++; // 将按钮次数加 1
setTitle("发生 " + act + " 次按钮事件");
}
}
);
getContentPane().add(mybutton);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(420,140);
setVisible(true);
}
}
作者: ssccg (23)   2015-07-23 23:02:00
new ActionListener() { } 会被compiler转成class AnonymousListener$1 implements ActionListener这就叫匿名类别
作者: cha122977 (CHA)   2015-07-23 23:24:00
直接用一个匿名类并且马上实作,所以不用取新class名

Links booklink

Contact Us: admin [ a t ] ucptt.com