作者dharma (达)
看板java
标题[问题] 可以省略implements ActionListener?
时间Thu Jul 23 22:29:24 2015
下面是书上的范例
是改写成匿名类别来实作倾听者
不太懂为什麽这种写法
为何可以省略「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);
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.65.89.53
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1437661767.A.837.html
1F:→ ssccg: new ActionListener() { } 会被compiler转成 07/23 23:02
2F:→ ssccg: class AnonymousListener$1 implements ActionListener 07/23 23:03
3F:→ ssccg: 这就叫匿名类别 07/23 23:04
4F:→ cha122977: 直接用一个匿名类并且马上实作,所以不用取新class名 07/23 23:24
THANK
我再仔细研究
※ 编辑: dharma (210.65.89.53), 07/24/2015 21:04:50