【Head First Java】圖形使用者介面
JFrame是個代表螢幕window的物件
可以把button,checkbox,text欄位等介面放在window上面。
將元件加到window上
(1)建立frame
JFrame frame = new JFrame();
(2)建立widget
(widget 英[ˈwɪdʒɪt] 美[ˈwɪdʒɪt] n. 小器具,裝飾品,視窗小部件;)
JButton button = new JButton(“click me”);
(3)把widget加到frame上
frame.getContentPane().add(button);
content 英[‘kɒntent]美[ˈkɑ:ntent]
n. 內容; 滿足; (書等的) 目錄; 容量;
pane 英[peɪn] 美[pen]
n. 窗格; 方框; 窗玻璃; 嵌板;
vt. 裝窗玻璃於; 鑲嵌板於; 用染色小布片拼做(衣服);
(4)顯示出來
frame.setSize(300, 300);
frame.setVisible(true);
監聽介面是介於監聽與事件源間的橋樑
Swing的GUI元件是事件的來源。
java.awt.event這個包中會看到一組事件。
每個事件型別都有相對應的監聽者介面,要實現介面就得宣告這件事,(宣告:鄉親們注意了!Dog實現Pet了!),必須把介面中搜友的方法都實現出來。
監聽和事件源的溝通
監聽:
如果類想知道按鈕的ActionEvent就要實現ActionListener這個介面。
因此需要呼叫addActionListener(this)並傳入ActionListener的引用向按鈕註冊。
按鈕在該事件發生時,呼叫介面上的方法。
ActionListener,編譯器要求要實現此介面的actionPerformed();
事件源:
按鈕是ActionEvent的來源,如果有物件對它的事件感興趣,那麼這個按鈕有個addActionListener()。
取得按鈕的ActionEvent
(1)實現ActionListener這個介面
(2)向按鈕註冊(告訴他你要監聽事件)
(3)定義事件處理的方法(實現介面上的方法)
內部類
內部類完全被外部類包起來
內部類能夠自由的存取外部類的內容。
內部類的例項一定會綁在外部類的例項上
class MyOuter{ private int x; MyInner inner = new MyInner(); public void doStuff(){ inner.go(); } class MyInner(){ void go(){ x = 42; } } }
內部類提供了在一個類中實現同一介面的多次機會。