第19課 介面,Map,Collection和Iterator 2011.8.5、6
介面:set of methods, common functionality among set fo classes.繼承方式是有層次關係,子類和父類的關係,而介面只是某些共性的實現。
Map: <key,vaule>是一個介面。在我的以往開發,是經常使用者儲存資料。implements這個介面,有HashMap<T,T>(這個我經常用),Key和value都需要是對象。可以建立對象Interface a = new MyClass();
Collection:同樣也是一個介面。ArrayList是它的一個實作類別。
Iterator:也是一個介面,對於collection都具有Iterator的介面。list throuth set of values,可以持續地掃描內容,方法有hasNext(),next(), remove()。迭代器可以使用簡單掃描方式,例如對於一個ArrayList list,可以用Iterator<String> it=list.iterator();。Map中key是collection(可以同keySet())方法來擷取,所有可以通過Iterator(例如phonebook.keySet().iterator())來掃描key,進而可以遍曆Map的資料。
在java5.0之後,有一個新的for迴圈的寫法,使用iterator方式(按常規,我們一般都是通過while(it.hasNext( it.net())){};的方式的方式),由於iterator出現在Collection中,直接寫為:for(Type name:Collection){}。例如for(String name: phonebook.keySet()){},在迴圈體中,name就是為依次掃描iterator得到的值。ArrayList是一個Collection,所以可以for(String
name:list){}這樣的方式。有人稱之為for each結構,當然名字並不重要。
第20課 圖形化使用者介面GUI 2011.8.8
介紹Java的swing的widget的使用能夠方式,這裡稱為interactor。對於個ConsoleProgram而言,右圖是Swing的布局,如果持續兩個控制項要求是South,會自動布局為從左至右的方式。
Swing的布局還可以,以前用過做一個後台系統,看起來風格清新,不錯。這裡面講的,我以前沒有注意的是JComboBox是可以加入新的選項,setEditable(true),不過一般不需要如此處理。
介紹了JButton, JComboBox, JRadioButton。
第21課 Interactor和Listener回顧 2011.8.9
通過Listener來檢測Interactor的事件。例如addActionListeners()用於檢測按鈕,並通過ActionPerformed(ActionEvent e)中觸發處理。 通過e.getActionCommand()來擷取Button的text內容,以判斷哪個button觸發操作。e.getSource()這直接返回觸發動作的對象,可以是否==某個對象來判斷。
介紹了JTextField,如果類extends Program(或者Console Program),可通過tf.addActionListener(this)來添加監聽器,輸入文字後按“Enter”實現事件觸發。同樣在ActionPerformed(ActionEvent e)中加入觸發處理內容。可以為TextField指定一個命令,通過setActionCommand(),也可以通過檢查名字來判斷是那個對象觸發。IntField和JTextField類似,區別是只能輸入整數。
接著介紹Layout。GridLayout。setLayout(...);還有TableLayout,TableLayout中的控制項大小不隨著size變化而自動改變,而GridLayout會布滿整個空間。
上一課講了ConsolePragram的布局,對於CENTER,也是可以setLayout(...),而console的文本輸入是自動作為第一個element的,此外將GCavas作為element加入。
相關連結:我的與編程思想相關的文章