Передача отформатированного значения SpinnerDateModel в строку

1

Я думаю, что моя проблема имеет простое решение, но я новичок в программировании на Java, поэтому я сам не смог ее решить, у меня есть этот jSpinner, который я использовал в качестве таймера. Мне нужно передать это значение jSpinner в строку. Пожалуйста, помогите мне сделать это.

Большое вам спасибо за вашу помощь!

Это код Spinner

Spintimetoplay = new javax.swing.JSpinner();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 24);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

SpinnerDateModel model = new SpinnerDateModel();
model.setValue(calendar.getTime());

JSpinner Spintimetoplay = new JSpinner(model);

JSpinner.DateEditor editor = new JSpinner.DateEditor(Spintimetoplay, "HH:mm");
DateFormatter formatter = (DateFormatter)editor.getTextField().getFormatter();
formatter.setAllowsInvalid(false);
formatter.setOverwriteMode(true);

Spintimetoplay.setEditor(editor);

Всякий раз, когда я использовал.getValue(), как сказано в некоторых предложениях, это дает мне значение 0, а не 00:00 (например).

  • 0
    Каков тип атрибута «значение» в SpinnerDateModel? Целое число или строка?
  • 0
    его целое число, сэр
Показать ещё 3 комментария
Теги:
swing
jspinner

2 ответа

1
Лучший ответ

Мне нужно передать это значение jSpinner в строку.

Поэтому получите значение spinner (поскольку вы используете SpinnerDateModel, он вернет объект Date) и используйте SimpleDateFormat, чтобы получить нужную строку:

Date value = (Date)spinTimeToPlay.getValue(); // Note code convention here
String formattedValue = new SimpleDateFormat("HH:mm").format(value);

Не по теме

Пожалуйста, взгляните на соглашения Java Code и придерживайтесь их:

"За исключением переменных, все константы экземпляра, класса и класса находятся в смешанном случае с младшей первой буквой. Внутренние слова начинаются с заглавных букв".


редактировать

Основываясь на вашем комментарии:

Я получил эту ошибку java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Date

Я переплатил, что у вас в вашем коде две переменные Spintimetoplay:

Spintimetoplay = new javax.swing.JSpinner(); // probably a class member
...
SpinnerDateModel model = new SpinnerDateModel();
...
JSpinner Spintimetoplay = new JSpinner(model); // local variable here

Здесь вы установите правильный SpinnerDateModel для локальной переменной вместо правого Spintimetoplay класса Spintimetoplay. Поэтому, когда вы пытаетесь вернуть значение, установленное в этом члене класса, его модель не является SpinnerDateModel а SpinnerNumberModel и, следовательно, возвращает целочисленное значение, вызывающее исключение ClassCastException. Вы должны внести следующие изменения:

// Spintimetoplay = new javax.swing.JSpinner(); remove this line
...
SpinnerDateModel model = new SpinnerDateModel();
...
Spintimetoplay = new JSpinner(model); // initialize your class member here
  • 0
    Большое спасибо за ваш ответ, сэр, но я получил эту ошибку "java.lang.ClassCastException: java.lang.Integer не может быть приведен к java.util.Date". Любое предложение, как это исправить, сэр? Спасибо!
  • 0
    Пожалуйста, смотрите мои изменения. Надеюсь, это поможет :) @Kid
Показать ещё 2 комментария
0

Вы можете попробовать использовать текст через

editor.getTextField().getText()

не проверяется, хотя

  • 0
    Я не могу заставить это работать таким образом, но большое спасибо!
  • 0
    Почему? Есть ошибки?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню