2015-05-07 8 views
1

Я использую jSpinner, чтобы установить время с форматом «HH: MM», и он отлично работает.Как установить значение jSpinner по умолчанию?

Моя проблема в том, что я хочу, чтобы мой jSpinner был «00:00», когда окно активировано, и как только jSpinner щелкнут, я хочу, чтобы значение было изменено в формате «HH: MM». И я не могу сделать это сам, значение jSpinner не изменяется, оно все равно «00:00». Пожалуйста, помогите мне. Заранее спасибо.

ответ

3

Предполагая, что вы используете SpinnerDateModel, тогда значение, которое управляет JSpinner, составляет java.util.Date. Вам нужно создать Date экземпляр, который имеет это час/минута поля устанавливается в полночь

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 

Date date = cal.getTime(); 
spinner.setValue(date); 

для получения формата значения из JSpinner, вы можете использовать SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
String value = sdf.format(spinner.getValue()); 

но как я могу установить его с помощью «00:00», когда окно активировано.

Без дополнительной информации я бы пообещал gest, используя WindowListener, предполагая, что вы не создаете окно каждый раз.

Посмотрите How to Write a Focus Listener и How to Write Window Listeners

И изменил значение после клика?

Это немного непонятно, но вы должны просто получить значение из JSpinner в то время, вы должны знать, что это и формат в зависимости от потребностей. JSpinner должен следить за форматированием значения автоматически (в зависимости от ваших настроек) при обновлении значений.

Сказав, что я должен сделать «Пуск» (или самое низкое значение) null, когда я создал модель, которая, казалось, чтобы вертушка для обновления значения времени

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 

Date startTime = cal.getTime(); 
cal.set(Calendar.HOUR, 23); 
cal.set(Calendar.MINUTE, 59); 
Date endTime = cal.getTime(); 

System.out.println(startTime); 
System.out.println(endTime); 

// The Calendar field seems to get ignored and overriden 
// by the UI delegate based on what part of the field 
// the cursor is current on (hour or minute) 
SpinnerDateModel model = new SpinnerDateModel(startTime, null, endTime, Calendar.MINUTE); 
JSpinner spinner = new JSpinner(model); 
spinner.setEditor(new JSpinner.DateEditor(spinner, "HH:mm")); 

spinner.setValue(startTime); 
+0

Да, но как я могу установить его с «00:00», когда окно активировано? И изменил ли значение один раз щелкнул? – nhix

+0

Первая часть будет зависеть от того, как вы устанавливаете окно; вторая часть должна быть позабочена сама по себе – MadProgrammer

+0

Привет @MadProgrammer, спасибо. У меня появилась идея, и это большая помощь. :) – nhix