Java API 分類導覽 - java.awt.List add()

List 類別 (class) 的 add() 方法 (method) 用來新增多重選取項的文字標籤。



修飾子與參數
public void add(String item)
public void add(String item, int index)


add() 沒有回傳值 (return value) ,有兩個參數 (paramenter) 版本,第一個只有一個參數 item ,需要 String 型態 (type) 的字串物件 (object) ,此為文字標籤,第二個有兩個參數, item 為字串物件的文字標籤, indexint 型態的索引值。


舉例如下
import java.awt.*;
import java.awt.event.*;

public class ListDemo implements ItemListener, ActionListener {
    Frame frame;
    List list;
    
    public static void main(String[] args) {
        new ListDemo();
    }
    
    public ListDemo() {
        frame = new Frame("AWTDemo");
        frame.addWindowListener(new AdapterDemo());
        frame.setLayout(new FlowLayout());
        
        list = new List();
        list.addItemListener(this);
        list.addActionListener(this);
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.setMultipleMode(true);
        list.select(2);
        
        frame.add(list);
        
        frame.pack();
        frame.setVisible(true);
        
        System.out.println("rows: " + list.getRows());
        for (int i = 0; i < list.getItemCount(); i++) {
            System.out.println(i + " : " + list.getItem(i));
        }
        System.out.println("mode: " + list.isMultipleMode());
        System.out.println("3: " + list.isIndexSelected(2));
    }
    
    public void itemStateChanged(ItemEvent e) {
        List l = (List) e.getSource();
        System.out.println("index: " + l.getSelectedIndex()); 
        System.out.println("item: " + l.getSelectedItem());
        if (l.getSelectedItem() == "one") {
            l.replaceItem("new", 1);
            System.out.println("replaceItem");
        }       
        if (l.getSelectedItem() == "two") {
            System.out.println("two");
        }
        if (l.getSelectedItem() == "three") {
            l.remove(1);
            System.out.println("remove");
        }
        if (l.getSelectedItem() == "four") {
            l.removeAll();
            System.out.println("removeAll");
        }
    }
    
    public void actionPerformed(ActionEvent e) {
        System.out.println("double clicked: " + list.getSelectedItem());
        
        int[] iA = list.getSelectedIndexes();
        String[] sA = list.getSelectedItems();
        for (int i = 0; i < iA.length; i++) {
            System.out.println("selected index: " + iA[i]);
            System.out.println("selected item: " + sA[i]);
        }
                
        list.deselect(0);
        list.deselect(1);
        list.deselect(2);
        list.deselect(3);
    }
}

class AdapterDemo extends WindowAdapter {
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:ListDemo.java
    功能:示範 Java 程式 
    作者:張凱慶
    時間:西元 2012 年 3 月 */


此例的 ListDemo 直接實作 ItemListener 與 ActionListener 介面
public class ListDemo implements ItemListener, ActionListener {


先建立 List 型態的物件後,接下來呼叫 List 型態的 addItemListener() 與 addActionListener() 設定事件處理,並以 this 當參數,然後依序呼叫 List 型態的 add() ,加入四個選項標籤後,再來呼叫 List 型態的 setMultipleMode() ,以 true 當參數設定可複選,最後呼叫 List 型態的 select() ,並以其中一個標籤當預設選項
list = new List();
list.addItemListener(this);
list.addActionListener(this);
list.add("one");
list.add("two");
list.add("three");
list.add("four");
list.setMultipleMode(true);
list.select(2);


建構子最後工作是在命令列印出相關訊息,先呼叫 List 型態的 getRows() 印選項的列數,然後利用迴圈,並呼叫 List 的 getItemCount() 取得選項總數當迴圈結束條件,並且呼叫 List 的 getItem() 印出每個選項的資訊,然後分別呼叫 List 的 isMultipleMode() 與 isIndexSelected() 印出是否為多選與是否以預設選項為索引值 2
System.out.println("rows: " + list.getRows());
for (int i = 0; i < list.getItemCount(); i++) {
    System.out.println(i + " : " + list.getItem(i));
}
System.out.println("mode: " + list.isMultipleMode());
System.out.println("3: " + list.isIndexSelected(2));


由於 List 實作 ItemListener 介面,因此要寫出 itemStateChanged()
public void itemStateChanged(ItemEvent e) {
    List l = (List) e.getSource();
    System.out.println("index: " + l.getSelectedIndex()); 
    System.out.println("item: " + l.getSelectedItem());
    if (l.getSelectedItem() == "one") {
        l.replaceItem("new", 1);
        System.out.println("replaceItem");
    }       
    if (l.getSelectedItem() == "two") {
        System.out.println("two");
    }
    if (l.getSelectedItem() == "three") {
        l.remove(1);
        System.out.println("remove");
    }
    if (l.getSelectedItem() == "four") {
        l.removeAll();
        System.out.println("removeAll");
    }
}


只要有文字標籤被選取,就呼叫 List 的 getSelectedIndex() 印出選項的索引值, getSelectedItem() 印出選項的文字標籤,然後判斷是哪個選項,如果 one 被選取,就呼叫 List 的 replaceItem() 置換索引值為 1 的選項,並在命令列印出 "replaceItem" 的訊息,如果 two 被選取,就在命令列印出 "two" 的訊息,如果 three 被選取,就呼叫 List 的 remove() 移除掉索引值為 1 的選項,如果 four 被選取,就呼叫 List 的 removeAll() 移除掉所有選項。


也由於 List 實作 ActionListener 介面,因此要寫出 actionPerformed()
public void actionPerformed(ActionEvent e) {
    System.out.println("double clicked: " + list.getSelectedItem());
       
    int[] iA = list.getSelectedIndexes();
    String[] sA = list.getSelectedItems();
    for (int i = 0; i < iA.length; i++) {
        System.out.println("selected index: " + iA[i]);
        System.out.println("selected item: " + sA[i]);
    }
                
    list.deselect(0);
    list.deselect(1);
    list.deselect(2);
    list.deselect(3);
}


任何選項被連續點擊兩次,就會呼叫 List 的 getSelectedItem() ,並在命令列印出是哪個選項。接著呼叫 List 的 getSelectedIndexes() 與 getSelectedItems() 取得所有複選選項的索引值與文字標籤,依序在命令列印出。最後依序呼叫 List 的 deselect() ,取消所有選項的選取。


編譯後執行,結果如下



中英文術語對照
類別class
方法method
回傳值return value
型態type
物件object
參數parameter


您可以繼續參考
AWT 元件


相關目錄
Java API 分類導覽
Java 教材
首頁


參考資料
http://docs.oracle.com/javase/6/docs/api/java/awt/List.html

沒有留言: