SpinnerListModelクラスの定義とコンストラクタ

広告

SpinnerModelインターフェースの実装クラスの1つであるSpinnerListModelクラスを利用する方法です。SpinnerListModelクラスは文字列などの集合をデータモデルのデータとして利用する場合に使います。

SpinnerListModelクラスの定義を確認します。クラス図は次のようになっています。

java.lang.Object
  javax.swing.AbstractSpinnerModel
    javax.swing.SpinnerListModel

public class SpinnerListModel
extends AbstractSpinnerModel
implements Serializable

SpinnerListModelはAbstractSpinnerModelクラスのサブクラスとなっています。AbstractSpinnerModelクラスはSpinnerModelインターフェースを実装したクラスでベースとなっているクラスです。

SpinnerListModelクラスのコンストラクタ

SpinnerListModelクラスをを利用するにはコンストラクタを使ってSpinnerListModelクラスのオブジェクトを作成します。どのようなコンストラクタが用意されているか確認してみます。

コンストラクタ
SpinnerListModel()
事実上空の SpinnerListModel を構築します。
SpinnerListModel(List<?> values)
指定された List で値のシーケンスを定義する SpinnerModel を構築します。
SpinnerListModel(Object[] values)
指定された配列で値のシーケンスを定義する SpinnerModel を構築します。

コンストラクタは3つ用意されています。データモデルのベースとなる初期データの指定方法でコンストラクタを選択します。

では1番目のコンストラクタを確認してみます。

事実上空の SpinnerListModel を構築します。モデルのリストには、1 つの
「空」の文字列要素が含まれます。

初期データとして空の値が1つ含まれるデータモデルを作成します。

実際の使い方は次のようになります。

SpinnerListModel model = new SpinnerListModel();
JSpinner spinner = new JSpinner(model);

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JSpinnerTest4.java

import javax.swing.*;
import java.awt.Dimension;
import java.awt.BorderLayout;

public class JSpinnerTest4 extends JFrame{

  public static void main(String[] args){
    JSpinnerTest4 frame = new JSpinnerTest4();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  JSpinnerTest4(){
    SpinnerListModel model = new SpinnerListModel();

    JSpinner spinner = new JSpinner(model);
    spinner.setPreferredSize(new Dimension(100, 25));

    JPanel p = new JPanel();
    p.add(spinner);

    getContentPane().add(p, BorderLayout.CENTER);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

SpinnerListModelのサンプル

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。