コンストラクタ

広告

コンストラクタは4つ用意されています。

コンストラクタ
JList()
空のモデルで JList を構築します。
JList(ListModel dataModel)
指定された null 以外のモデルの要素を表示する JList を構築します。
JList(Object[] listData)
指定された配列の要素を表示する JList を構築します。
JList(Vector<?> listData)
指定された Vector の要素を表示する JList を構築します。

2番目のコンストラクタの引数で使われているListModelは別のページで細かく見てみますので、取り合えず3番目と4番目のコンストラクタを見ていきましょう。

下記のコンストラクタの場合、引数としてリストに表示される項目の配列を指定しています。最初の例ではこのコンストラクタを使っており、String型の配列を指定してJListを作成しています。

指定された配列の要素を表示する JList を構築します。このコンストラク
タは、ListModel コンストラクタに委譲します。 

パラメータ:
  listData - データモデルにロードされる Object の配列

このコンストラクタの場合は初期データの指定の方法に配列の代わりにVectorを使います。

指定された 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"メソッドを使います。

Object の配列から ListModel を構築し、setModel を適用します。 

パラメータ:
  listData - リストに表示する項目を保持する Object の配列

また、引数にVectorクラスのオブジェクトを使うメソッドも用意されています。

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 )

関連記事 (一部広告含む)