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 の構成ブロックであるコンポーネントを使用する |