2009-06-14 17 views
0

Ich habe die folgende Klasse erstellt, die JSpinner erweitert, um über dd/mm/yyy Werte zu iterieren.Benutzerdefinierter JSpinner


public class DateSpinner extends JSpinner{ 

    Calendar calendar = new GregorianCalendar(); 

    public DateSpinner(){ 
    super(); 

    calendar.add(Calendar.DAY_OF_YEAR, 1); 
    Date now = calendar.getTime(); 

    calendar.add(Calendar.DAY_OF_YEAR, -2); 
    Date startDate = calendar.getTime(); 

    calendar.add(Calendar.YEAR, 100); 
    Date endDate = calendar.getTime(); 

    SpinnerDateModel dateModel = new SpinnerDateModel 
     (now , startDate , endDate , Calendar.DAY_OF_MONTH); 

    setModel(dateModel); 

    JFormattedTextField tf = 
     ((JSpinner.DefaultEditor)getEditor()).getTextField(); 
    DefaultFormatterFactory factory = 
     (DefaultFormatterFactory)tf.getFormatterFactory(); 
    DateFormatter formatter = (DateFormatter)factory.getDefaultFormatter(); 

    // Change the date format to only show the hours 
    formatter.setFormat(new SimpleDateFormat("dd/MM/yyyy")); 
    } 




} 

Mein Problem ist, wenn ich seinen Wert

Date today = new Date(); 
    spinner.setValue(today); 

ich das Datum einschließlich der Zeit und Tag der Woche mit eingestellt. Wenn ich den Spinner anfasse, formatiert er ihn entsprechend dem von mir eingestellten Format. Wie kann ich zunächst das gewünschte Format erhalten?

Antwort

2

Verwendung integrierten Editoren, wie folgende

spinner.setEditor(new JSpinner.DateEditor(spinner, "dd/MM/yyyy")); 
1

Auch als eine Randnotiz - wann immer Sie mit Kalender, Termine und Zeiten funktionieren würde ich mit Joda Time betrachten.

+0

Und 'LocalDate' und' LocalDateTime' Klassen sind verfügbar, wenn Sie mit Java8 APIs arbeiten. –