- Home ›
- Swing ›
- JSpinnerクラス ›
- HERE
日付データの表示形式を設定する
データモデルとしてSpinnerDateModelクラスを使用した場合に、スピナーに表示される日付データの表示形式を設定する方法を確認します。日付データを扱う場合にはエディタとして「JSpinner.DateEditor」クラスを使用します。
JSpinner.DateEditorクラスの定義を確認します。クラス図は次のようになっています。
- java.lang.Object
- java.awt.Component
- java.awt.Container
- javax.swing.JComponent
- javax.swing.JPanel
- javax.swing.JSpinner.DefaultEditor
- javax.swing.JSpinner.DateEditor
- public static class JSpinner.DateEditor extends JSpinner.DefaultEditor
JSpinner.DateEditorクラスはJSpinner.DefaultEditorクラスのサブクラスとなっています。JSpinner.DefaultEditorクラス自体はJPanelクラスのサブクラスです。
JSpinner.DateEditorクラスのコンストラクタ
JSpinner.DateEditorクラスをを利用するにはコンストラクタを使ってJSpinner.DateEditorクラスのオブジェクトを作成します。どのようなコンストラクタが用意されているか確認してみます。
| コンストラクタ |
|---|
| JSpinner.DateEditor(JSpinner spinner) JFormattedTextField での SpinnerDateModel の値の表示、編集をサポートする JSpinner エディタを構築します。 |
| JSpinner.DateEditor(JSpinner spinner, String dateFormatPattern) JFormattedTextField での SpinnerDateModel の値の表示、編集をサポートする JSpinner エディタを構築します。 |
コンストラクタは2つ用意されています。通常はフォーマットを合わせて指定する2番目のコンストラクタを使用します。
では2番目のコンストラクタを確認してみます。
JSpinner.DateEditor
public JSpinner.DateEditor(JSpinner spinner,
String dateFormatPattern)
JFormattedTextField での SpinnerDateModel の値の表示、編集をサポートす
る JSpinner エディタを構築します。この DateEditor は、スピナーの
ChangeListener および新しい JFormattedTextField の PropertyChangeListener
の両方になります。
パラメータ:
spinner - このエディタが監視するスピナーモデル
dateFormatPattern - テキストフィールドの値の表示と解析に使用する
SimpleDateFormat オブジェクトの 初期パターン
例外:
IllegalArgumentException - スピナーモデルが SpinnerDateModel のインス
タンスでない場合
1番目の引数にエディタの対象となるJSpinnerクラスのオブジェクトを設定します。
2番目の引数には表示形式を表す文字列を指定します。JSpinner.DateEditorクラスではデータの表示にJFormattedTextFieldクラスを使用しています。JFormattedTextFieldクラスでは引数にフォーマットを表すクラスのオブジェクトを指定しますがJSpinner.DateEditorクラスではSimpleDateFormatクラスを利用して表示形式を設定します。
2番目の引数に設定された文字列はSimpleDateFormatクラスのコンストラクタに引き渡される値となりますので、SimpleDateFormatクラスで設定可能なフォーマット形式で指定して下さい。
※SimpleDateFormatクラスについては『JFormattedTextFieldクラス』を参照して下さい。
実際の使い方は次のようになります。
SpinnerDateModel model = new SpinnerDateModel(); JSpinner spinner = new JSpinner(model); JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "yyyy.MM.dd"); spinner.setEditor(editor);
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import javax.swing.*;
import java.awt.Dimension;
import java.awt.BorderLayout;
public class JSpinnerTest18 extends JFrame{
public static void main(String[] args){
JSpinnerTest18 frame = new JSpinnerTest18();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(10, 10, 300, 200);
frame.setTitle("タイトル");
frame.setVisible(true);
}
JSpinnerTest18(){
SpinnerDateModel model = new SpinnerDateModel();
JSpinner spinner = new JSpinner(model);
JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "yyyy.MM.dd");
spinner.setEditor(editor);
spinner.setPreferredSize(new Dimension(150, 25));
JPanel p = new JPanel();
p.add(spinner);
getContentPane().add(p, BorderLayout.CENTER);
}
}
上記をコンパイルした後で実行すると次のように表示されます。
今回は「yyyy.mm.dd」の形式で表示するように設定しています。
( Written by Tatsuo Ikura )
JavaDrive