作者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://www.ptt.cc/bbs/java/M.1437661767.A.837.html
→ ssccg: new ActionListener() { } 會被compiler轉成 07/23 23:02
→ ssccg: class AnonymousListener$1 implements ActionListener 07/23 23:03
→ ssccg: 這就叫匿名類別 07/23 23:04
→ cha122977: 直接用一個匿名類並且馬上實作,所以不用取新class名 07/23 23:24
THANK
我再仔細研究
※ 編輯: dharma (210.65.89.53), 07/24/2015 21:04:50