Я думаю, что моя проблема имеет простое решение, но я новичок в программировании на 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 (например).
Мне нужно передать это значение 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
Вы можете попробовать использовать текст через
editor.getTextField().getText()
не проверяется, хотя