это код 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()));
Кажется, вы создаете два экземпляра 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
и только формат, когда вам действительно нужно. Это дает вам более гибкое решение