SpinnerModelを使ってJSpinnerクラスのオブジェクトを作成する

広告

スピナーのデータを管理しているのがSpinnerModelインターフェースを実装したクラスとなります。SpinnerModelインターフェースを自分で実装しても構いませんし既に用意されている実装クラスを使っても構いません。

実装クラスとして用意されているクラスはSpinnerListModelクラス、SpinnerNumberModelクラス、SpinnerDateModelクラスの3つととなります。これらの詳しい使い方は次のページ以降で見ていきます。

ここではSpinnerModelインターフェースを実装したクラス、又は実装クラスのオブジェクトを利用してJSpinnerクラスのオブジェクトを作成する方法を確認します。コンストラクタで指定する方法とメソッドを利用する方法があります。まずはコンストラクタを確認します。

次へ進むおよび前に戻るボタンのペアと SpinnerModel 用のエディタを持つ完全
なスピナーを構築します。

引数にはSpinnerModelインターフェースを実装したクラスのオブジェクトを指定します。

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

String[] price = {"5万円以内", "10万円以内", "10万円以上"};
SpinnerListModel model = new SpinnerListModel(price);
JSpinner spinner = new JSpinner(model);

※データモデルとしてSpinnerListModelクラスを使っています。

メソッドを使って設定する

作成されたJSpinnerクラスのオブジェクトに対してデータモデルを設定することもできます。JSpinnerクラスで用意されている「setModel」メソッドを使います。

このスピナーの値を表すモデルを変更します。エディタのプロパティーが明示的
に設定されていない場合、エディタのプロパティーは "model" PropertyChangeEvent
がトリガーされたあとで暗黙の内に設定されます。エディタのプロパティーは、
次のように createEditor によって返された値に設定されます。

 setEditor(createEditor(model));
 
パラメータ:
  model - 新しい SpinnerModel 
例外: 
  IllegalArgumentException - モデルが null の場合

引数にはSpinnerModelインターフェースを実装したクラスのオブジェクトを指定します。

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

String[] price = {"5万円以内", "10万円以内", "10万円以上"};
SpinnerListModel model = new SpinnerListModel(price);
JSpinner spinner = new JSpinner();
spinner.setModel(model);

サンプルプログラム

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

JSpinnerTest3.java

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

public class JSpinnerTest3 extends JFrame{

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

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

  JSpinnerTest3(){
    String[] price = {"5万円以内", "10万円以内", "10万円以上"};
    SpinnerListModel model = new SpinnerListModel(price);

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

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

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

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

JSpinnerでデータモデルを設定する

ボタンをクリックして値を移動させると次のように表示されます。

JSpinnerでデータモデルを設定する

( Written by Tatsuo Ikura )

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