コンストラクタ
コンストラクタは4つ用意されています。
コンストラクタ |
---|
JList() 空のモデルで JList を構築します。 |
JList(ListModel dataModel) 指定された null 以外のモデルの要素を表示する JList を構築します。 |
JList(Object[] listData) 指定された配列の要素を表示する JList を構築します。 |
JList(Vector<?> listData) 指定された Vector の要素を表示する JList を構築します。 |
2番目のコンストラクタの引数で使われているListModelは別のページで細かく見てみますので、取り合えず3番目と4番目のコンストラクタを見ていきましょう。
下記のコンストラクタの場合、引数としてリストに表示される項目の配列を指定しています。最初の例ではこのコンストラクタを使っており、String型の配列を指定してJListを作成しています。
public JList(Object[] listData)
指定された配列の要素を表示する JList を構築します。このコンストラク タは、ListModel コンストラクタに委譲します。 パラメータ: listData - データモデルにロードされる Object の配列
このコンストラクタの場合は初期データの指定の方法に配列の代わりにVectorを使います。
public JList(Vector<?> listData)
指定された Vector の要素を表示する JList を構築します。このコンストラ クタは、ListModel コンストラクタに委譲します。 パラメータ: listData - データモデルにロードされる Vector
一応こちらのコンストラクタでもサンプルを作ってみます。
import javax.swing.*; import java.awt.*; import java.util.Vector; public class JListSample extends JFrame{ public static void main(String[] args){ JListSample test = new JListSample("JListSample"); /* 終了処理を変更 */ test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setBounds( 10, 10, 250, 130); test.setVisible(true); } JListSample(String title){ setTitle(title); /* JListの初期データ */ Vector<String> initData = new Vector<String>(); StringBuffer sb; for (int i = 0 ; i < 10 ; i++){ sb = new StringBuffer(); sb.append("リスト項目"); sb.append(i); sb.append("番目"); initData.add(new String(sb)); } JList list = new JList(initData); JScrollPane sp = new JScrollPane(); sp.getViewport().setView(list); sp.setPreferredSize(new Dimension(200, 80)); JPanel p = new JPanel(); p.add(sp); getContentPane().add(p, BorderLayout.CENTER); } }
実行結果は下記のようになります。
初期データを後から指定する
取り合えず空のJListを作っておいて、後から表示させるデータを指定することもできます。JListクラスで用意されている"setListData"メソッドを使います。
public void setListData(Object[] listData)
Object の配列から ListModel を構築し、setModel を適用します。 パラメータ: listData - リストに表示する項目を保持する Object の配列
また、引数にVectorクラスのオブジェクトを使うメソッドも用意されています。
public void setListData(Vector<?> listData)
Vector から ListModel を構築し、setModel を適用します。 パラメータ: listData - リストに表示する項目を保持する Vector
上記の2つのメソッドは、既に試してみた2つのコンストラクタと同じ引数を使いますので、使い方は分かるかと思います。
こちらもサンプルを作って試しておきます。
import javax.swing.*; import java.awt.*; public class JListSample extends JFrame{ public static void main(String[] args){ JListSample test = new JListSample("JListSample"); /* 終了処理を変更 */ test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setBounds( 10, 10, 250, 130); test.setVisible(true); } JListSample(String title){ setTitle(title); /* JListの初期データ */ String[] initData = {"Blue", "Green", "Red", "Whit", "Black"}; JList list = new JList(); JScrollPane sp = new JScrollPane(); sp.getViewport().setView(list); sp.setPreferredSize(new Dimension(200, 80)); JPanel p = new JPanel(); p.add(sp); list.setListData(initData); getContentPane().add(p, BorderLayout.CENTER); } }
実行結果は下記のようになります。最初の例と結果は同じです。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。