| GUI の構成ブロックであるコンポーネントを使用する |
Listクラスは、選択可能なテキスト項目 (1 行当たり 1 つ) をもったスクロール領域を提供する。 一般に、ユーザはクリックによって項目を選択し、項目をダブルクリックするか改行キーを押すことによってアクションを起こすよう指示する。 リストでは同時に複数個を選択しても、1 個だけしか選択できないようにしてもよい 。 複数のオプションからユーザが選択するコンポーネントとしては、ほかにチェックボックス、選択肢、メニュー がある。
次に示すのは、イベントの情報を示すテキストエリアと 2 つのリストを表示するア プレットである。 上のリスト (スペイン語の数を表示する) は複数選択を認める。 下のリスト (イタリア語の数を表示する) は最大 1 個の選択しか認めない。 各リストの最初の項目はインデックス 0 であることに注意する。
以下に、各リストの作成とリストに関するイベントの処理を行うコードを示す。 (プログラム全体も参照できる。) アクションイベントのための
e.argデータ (2 番目の引数としてaction()メソッドに渡される) は、ボタンやメニューのような他のコンポーネントでのアクションイベントの引数と同様、アクションを起こす項目の名前であることに注意する。ただし、非アクションリストのイベントに対するe.argデータは、アクションを起こす項目のインデックス である。上記で使用されている 2 つの構築子、...//インスタンス変数を宣言する: 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); }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()メソッドが直前に識別可能にした項目のインデックスを取り出す。
| GUI の構成ブロックであるコンポーネントを使用する |