[問題] 可以省略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