日付入力ボックスを作る Java Swing JSpinnerの使い方 – Javaでデスクトップトップアプリ(予定&ToDo管理)を作る-015
今回は、Java Swingで日付入力ボックスをつくる方法を見ていきます。
JSpinnerというクラスを使用していきます。
JSpinnerは日付や値段など連続したデータを選択するときに便利なボックスです。
さっそく使い方を見ていきます。
JSpinnerの使い方
まずは、
SpinnerModelクラスでSpinner内のモデルを作成します。
例えば、
String[] country = {“Japan”, “US”, “UK”};
SpinnerListModel model = new SpinnerListModel(country);
で「Japan」「US」「UK」のリストをSpinner内に入れることができます。
数字データをSpinnerに入れたいときには、
SpinnerNumberModel model = new SpinnerNumberModel(Number value, Comparable minimum, Comparable maximum, Number stepSize)
これで、value – 初期値
minimum – 先頭の数値
maximum – 最後の数値
stepSize – 要素間の差
のデータを作ることができます。
日付のデータのときは、
SpinnerDateModel model =new SpinnerDateModel(Date value,Comparable start,Comparable end,int calendarField)
これで、value – モデルの現在の値 (null 以外)
start – 先頭の日付または null
end – 最後の日付または null
calendarField - クリックで変化する値の幅(Calendar.DAY_OF_MONTHなど)
のデータを作ることができます。
これらのSpinnerModelを作成した後、
JSpinner spinner = new JSpinner(model);
でJSpinnerボックスを作ることができます。
日付の表示を変えるには、
JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, “yyyy.MM.dd”);
spinner.setEditor(editor);
等とします。
Java.util.Dateオブジェクトを取り出したいときには(注 以前に自作したDateクラスは削除しています。)
Date value = model.getDate();
で値を取り出すことができます。
実際に日付ボックスを作成
それでは、AddModeFrameに追加していきましょう。
~今までのコード~
JLabel label3 = new JLabel("日付:");
label3.setBounds(30,110,60,30);
Calendar calendar = Calendar.getInstance();
Date initDate = calendar.getTime();//今日の日付を初期値にする(注Java.utilのDateです)
calendar.set(2016, 1, 1, 0, 0);
Date startDate = calendar.getTime();//2016/1/1を最低値にする(注Java.utilのDateです)
SpinnerModel model =
new SpinnerDateModel(initDate, startDate, null, Calendar.DAY_OF_MONTH);
JSpinner spinner = new JSpinner(model);
JSpinner.DateEditor editor = new JSpinner.DateEditor(spinner, "yyyy.MM.dd");
spinner.setEditor(editor);
spinner.setBounds(100,110,200,30);
panel.add(spinner);
実行してみると、
アプリ開発記の次の記事はこちら => コンボボックスを作る JComboBoxの使い方 – Javaでデスクトップトップアプリ(予定&ToDo管理)を作る-016