Previous | Next | Trail Map | Creating a User Interface | GUI の構成ブロックであるコンポーネントを使用する


リストの使用方法

List(in 
the API reference documentation) クラスは、選択可能なテキスト項目 (1 行当たり 1 つ) をもったスクロール領域を提供する。 一般に、ユーザはクリックによって項目を選択し、項目をダブルクリックするか改行キーを押すことによってアクションを起こすよう指示する。 リストでは同時に複数個を選択しても、1 個だけしか選択できないようにしてもよい 。 複数のオプションからユーザが選択するコンポーネントとしては、ほかにチェックボックス選択肢メニュー がある。

次に示すのは、イベントの情報を示すテキストエリアと 2 つのリストを表示するア プレットである。 上のリスト (スペイン語の数を表示する) は複数選択を認める。 下のリスト (イタリア語の数を表示する) は最大 1 個の選択しか認めない。 各リストの最初の項目はインデックス 0 であることに注意する。

以下に、各リストの作成とリストに関するイベントの処理を行うコードを示す。 (プログラム全体も参照できる。) アクションイベントのための e.arg データ (2 番目の引数としてaction() メソッドに渡される) は、ボタンやメニューのような他のコンポーネントでのアクションイベントの引数と同様、アクションを起こす項目の名前であることに注意する。ただし、非アクションリストのイベントに対するe.arg データは、アクションを起こす項目のインデックス である。

    ...//インスタンス変数を宣言する:
    TextArea output;
    List spanish, italian;

    ...//初期化を行う:

    //複数選択を認める最初のリストを作成する。
    spanish = new List(4, true); //prefer 4 items visible
    spanish.addItem("uno");
    spanish.addItem("dos");
    spanish.addItem("tres");
    spanish.addItem("cuatro");
    spanish.addItem("cinco");
    spanish.addItem("seis");
    spanish.addItem("siete");

    //同時には 1 個の選択しか認めない 2 番目のリストを作成する。
    italian = new List(); //Defaults to none visible, only one selectable
    italian.addItem("uno");
    italian.addItem("due");
    italian.addItem("tre");
    italian.addItem("quattro");
    italian.addItem("cinque");
    italian.addItem("sei");
    italian.addItem("sette");

. . .

public boolean action(Event e, Object arg) {
    if (e.target instanceof List) {
        String language = (e.target == spanish) ?
                          "Spanish" : "Italian";
        output.appendText("Action event occurred on ¥""
                          + (String)arg  + "¥" in "
                          + language + ".¥n");
    }
    return true;
}

public boolean handleEvent(Event e) {
    if (e.target instanceof List) {
        List list = (List)(e.target);
        String language = (list == spanish) ?
                          "Spanish" : "Italian";
        switch (e.id) {
          case Event.LIST_SELECT:
            int sIndex = ((Integer)e.arg).intValue();
            output.appendText("Select event occurred on item #"
                                  + sIndex + " (¥""
                                  + list.getItem(sIndex)  + "¥") in "
                              + language + ".¥n");
            break;
          case Event.LIST_DESELECT:
            int dIndex = ((Integer)e.arg).intValue();
            output.appendText("Deselect event occurred on item #"
                                  + dIndex + " (¥""
                                  + list.getItem(dIndex)  + "¥") in "
                              + language + ".¥n");
        }
    }
    return super.handleEvent(e);
}

上記で使用されている 2 つの構築子、addItem() および getItem() メソッドのほか、List は以下のような便利なメソッドも提供する 。

int countItems()
List にある項目の数を返す。
String getItem(int)
指定されたインデックスで項目が表示している文字列を返す。
void addItem(String, int)
指定されたインデックスに指定された項目を追加する。
void replaceItem(String, int)
指定されたインデックスで項目を置換する。
void clear(), void delItem(int), void delItems(int, int)
リストから 1 つ以上の項目を削除する。 clear() メソッドはリストを空にする。 delItem() メソッドは指定された項目をリストから削除する。 delItems() メソッドは指定されたインデックスの間 (インデッ クス自体も含む) にあるすべての項目をリストから削除する。
int getSelectedIndex()
リストで選択された項目のインデックスを返す。 何も項目が選択されていないか、複数の項目が選択されている場合は -1 を返 す。
int[] getSelectedIndexes()
リストで選択された項目のインデックスを返す。
String getSelectedItem()
getSelectedIndex() と類似しているが、インデックスではなく選択された項目の String を返す。 何も項目が選択されていないか、複数の項目が選択されている場合は null を 返す。
String[] getSelectedItems()
getSelectedIndexes() と類似しているが、インデックスではなく選択された項目 (複数) の String を返す。
void select(int), void deselect(int)
指定されたインデックスで項目を選択する、または選択を取り消す。
boolean isSelected(int)
指定されたインデックスで項目が選択されていれば true を返す。
int getRows()
リストで識別できる行の数を返す。
boolean allowsMultipleSelections(), boolean setMultipleSelections()
リストが同時に複数項目の選択 ("on" にすること) を認めているかどうかを返す、または設定する。
int getVisibleIndex(), void makeVisible(int)
makeVisible() メソッドは、指定されたインデックスの項目を識別できるようにする。 getVisibleIndex() メソッドは、makeVisible() メソッドが直前に識別可能にした項目のインデックスを取り出す。


Previous | Next | Trail Map | Creating a User Interface | GUI の構成ブロックであるコンポーネントを使用する