Swing/SpinnerDateModel のバックアップソース(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Swing/SpinnerDateModel へ行く。
- 1 (2012-11-23 (金) 04:42:33)
- 2 (2012-12-19 (水) 01:56:47)
- 3 (2013-09-06 (金) 00:00:04)
- 4 (2014-03-13 (木) 12:39:54)
- 5 (2014-11-25 (火) 03:03:31)
- 6 (2014-11-26 (水) 19:11:01)
- 7 (2016-02-16 (火) 19:29:02)
- 8 (2016-04-15 (金) 15:23:03)
- 9 (2017-07-28 (金) 18:23:18)
- 10 (2018-08-01 (水) 21:31:14)
- 11 (2020-08-04 (火) 21:08:33)
- 12 (2021-12-28 (火) 12:16:12)
TITLE:JSpinnerで日付を設定 #navi(../) RIGHT:Posted by &author(aterai); at 2011-08-22 *JSpinnerで日付を設定 [#e79d682c] JSpinnerを使って日付を設定します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(https://lh5.googleusercontent.com/-llHXaOVDQbQ/TlH5yRAODSI/AAAAAAAABBE/XsSUtm7J_U0/s800/SpinnerDateModel.png) **サンプルコード [#b916b77a] #code(link){{ final String dateFormatPattern = "yyyy/MM/dd"; JSpinner s = new JSpinner( new SpinnerDateModel(date, start, null, Calendar.DAY_OF_MONTH)); final JSpinner.DateEditor editor = new JSpinner.DateEditor(s, dateFormatPattern); s.setEditor(editor); editor.getTextField().addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { EventQueue.invokeLater(new Runnable() { @Override public void run() { int i = dateFormatPattern.lastIndexOf("dd"); editor.getTextField().select(i, i+2); } }); } }); }} **解説 [#a7924332] - Calendar.DAY_OF_MONTH -- 本日を現在の値と下限値、上限値はnull(制限無し)、増減値をCalendar.DAY_OF_MONTHとしたSpinnerDateModelを使用 --- 下限値が現在時刻(例: Mon Aug 22 15:09:27 JST 2011)なので、現在の値(Mon Aug 22 00:00:00 JST 2011)が範囲外となり、矢印ボタンで日付を変更できない --- 参考: [https://forums.oracle.com/forums/thread.jspa?threadID=2266752 OTN Discussion Forums : DateSpinner spins only after an edit] - min: set(Calendar.HOUR_OF_DAY, 0) -- 下限値を以下のように本日の初めにリセット --- 例: Mon Aug 22 15:09:27 JST 2011 を Mon Aug 22 00:00:00 JST 2011 #code{{ Calendar today = Calendar.getInstance(); today.clear(Calendar.MILLISECOND); today.clear(Calendar.SECOND); today.clear(Calendar.MINUTE); today.set(Calendar.HOUR_OF_DAY, 0); Date start = today.getTime(); System.out.println(date); System.out.println(start); JSpinner spinner2 = new JSpinner(new SpinnerDateModel( date, start, null, Calendar.DAY_OF_MONTH)); spinner2.setEditor(new JSpinner.DateEditor(spinner2, dateFormatPattern)); }} - JSpinner.DateEditor+FocusListener -- フォーカスがエディタに移動した場合、日付部分が選択状態になるようリスナーを設定 --- 矢印ボタンのクリックで編集開始した場合、先頭の年度部分ではなく日付が増減する --- 参考: [[CellEditorをJSpinnerにして日付を変更>Swing/DateCellEditor]] **参考リンク [#r0bd2cc7] - [https://forums.oracle.com/forums/thread.jspa?threadID=2266752 OTN Discussion Forums : DateSpinner spins only after an edit] - [[CellEditorをJSpinnerにして日付を変更>Swing/DateCellEditor]] **コメント [#h4700b7a] #comment