Как получить дату от моего JSpinner?
Это код Spinner
Hini = new javax.swing.JSpinner();
Date date = new Date();
SpinnerDateModel sm = new SpinnerDateModel(date, null, null, Calendar.MINUTE);
JSpinner Hini = new JSpinner(sm);
JSpinner.DateEditor de = new JSpinner.DateEditor(Hini, "hh:mm a");
de.getTextField().setEditable( true );
Hini.setEditor(de);
И вот как я хочу получить значения, но всегда показывает "00:00"
`SimpleDateFormat formater = new SimpleDateFormat("HH/mm");
String spinnerValue = formater.format(Hini.getValue());
System.out.println(spinnerValue);`
Я тоже пробовал это, но всегда показывало реальное время, а не выбранное
Hini = new JSpinner(sm);
de = new JSpinner.DateEditor(Hini, "hh:mm a");
de.getTextField().setEditable( false );
Hini.setEditor(de);
System.out.println("Spinner: "+de.getFormat().format(Hini.getValue()));
1 ответ
Решение
Вы, кажется, создаете два экземпляра JSpinner
// Instance(?) field here...
Hini = new javax.swing.JSpinner();
Date date = new Date();
SpinnerDateModel sm = new SpinnerDateModel(date, null, null, Calendar.MINUTE);
// Local field here
JSpinner Hini = new JSpinner(sm);
JSpinner.DateEditor de = new JSpinner.DateEditor(Hini, "hh:mm a");
de.getTextField().setEditable( true );
Hini.setEditor(de);
Поэтому я могу только догадываться, что локальное поле - это то, что добавляется в пользовательский интерфейс, а поле экземпляра игнорируется, а это означает, что то, что пользователь вводит в поле, не было установлено в поле экземпляра.
Отбросьте создание второго поля и замените его Hini.setModel(sm);
Вместо форматирования значения непосредственно из JSpinner
, вы должны просто получить ссылку на Date
Значение и формат только тогда, когда вам действительно нужно. Это дает вам более гибкое решение