1. 程式人生 > >【Head First Java】圖形使用者介面

【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;
        }
    }
}

內部類提供了在一個類中實現同一介面的多次機會。