本站電子書

您可以在這些電子書店找到本站電子書: Google Play 圖書iBooks StoreHyReadReadmooPubu
===>>>本站推出學習遊戲意見調查<<<===《如何自學程式設計》入選 Google Play 台灣地區2016年度最佳書籍

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

List 類別 (class) 的 isIndexSelected() 方法 (method) 判斷特定索引值的選項是否被選取。



修飾子與參數
public boolean isIndexSelected(int index)


isIndexSelected() 的回傳值 (return value) 為 boolean 型態 (type) 的布林常數,非物件 (object) ,需要一個 int 型態的整數參數 (paramenter) 。


舉例如下
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

沒有留言: