9. 基本的なコンポーネント3
ユーザインタフェース 9章 基本的なコンポーネント3
- 9.1. javax.swing.JList
- 9.2. javax.swing.JComboBox
- 9.3. javax.swing.JProgressBar
- 9.4. javax.swing.JToolTip
- 9.5. キーボードとの連携
9.1. javax.swing.JList
「JList」は項目を1行ずつ縦に並べて表示し、選択するためのコンポーネントです。「JList」自身はスクロール機能を持たないので、大きいリストを表示する場合には「JScrollPane」に入れて利用するのが一般的です。
「JList」のコンストラクタには幾つかあります。
JList() JList(ListModel listModel) JList(Object[] listData) JList(Vector listData)
引数無しのコンストラクタを使用した場合には、後に「setListData」メソッドを使用して表示するデータを設定してなければなりません。引数1つのコンストラクタでは、いずれも引数に指定されたデータが、リストに表示されます。「ListModel」とは「JList」が内部に持つデータモデルです。配列や「Vector」で値を指定した場合にも、内部で「ListModel」に変換されてデータが保持されます。
リストに表示されるデータは、配列や「Vector」の中に入れて「JList」に渡されます。ではデータはリストにどのように表示されるのでしょうか?「Object」クラスが持つ「toString」メソッドの結果を表示します。Javaのオブジェクトは全て「Object」クラスを継承していますので、必ず「toString」メソッドを持ちます。「String」クラスの場合には、内部に保持する文字列がそのまま返されますが、他のクラスの場合は違います。色々と試してください。
(実習課題1)
以下のプログラムを作成しなさい。
- ウィンドウに表示されるコンポーネントはリストと「表示」ボタン。
- リストには10以上の都市の名前がリストアップされている事。
- 「表示」ボタンを押すと、その時点で選択されている都市名がコンソールに表示される。
- リストとのデータの受け渡しは配列で行う事。
- (ヒント)「getSelectedIndices」メソッドを使う。
(実習課題2)
実習課題1のプログラムを改良しなさい。
- 「消去」ボタンを追加し、そのボタンを押すと選択された都市がリストから削除されるようにする事。
- リストデータの管理に「DefaultListModel」クラスを使用する事。
- (ヒント)リストからの削除は「DefaultListModel」クラスに対して行う。
- (ヒント)「DefaultListModel」の使い方は「Vector」とほぼ同じ。