2012-04-05 9 views

Antwort

7

Ich glaube nicht, dass es eine direkte Möglichkeit auf der Komponente gibt, dies zu tun. Eine Möglichkeit, die ich kenne, ist die Verwendung der setSelectableDateRange(Date from,Date to) - Wenn Sie das Von Datum auf das aktuelle Datum setzen, werden alle vorherigen Tag Zellen, Jahr/Monat Dropdowns deaktiviert.

Beispiel:

JCalendar calendar = new JCalendar(); 
    calendar.setSelectableDateRange(new Date(),new SimpleDateFormat("MM-DD-YYYY").parse("05-05-2015")); 

    PropertyChangeListener calendarChangeListener = new PropertyChangeListener() { 
     @Override 
     public void propertyChange(PropertyChangeEvent evt) { 
      Date selectedDate = ((JCalendar)evt.getSource()).getDate(); 
     } 
    }; 
    calendar.addPropertyChangeListener("calendar",calendarChangeListener); 

Diese Auswahl an einem Zeitpunkt vor dem aktuellen Datum deaktivieren und nach 05/05/2015

Beachten Sie, dass diese API in ihren javadoc nicht dokumentiert ist. Aber das ist immer noch ein öffentlicher Setter, der wie erwartet funktioniert.

EDIT, da Sie wissen wollen, wie JDateChooser in ähnlichem Kontext

verwendet werden kann
JDateChooser chooser = new JDateChooser(); 
    chooser.getJCalendar().setSelectableDateRange(new Date(),new SimpleDateFormat("MM-DD-YYYY").parse("05-05-2015")); 
    chooser.getJCalendar().addPropertyChangeListener("calendar",...); 
+1

Min, Max und Range Methoden in dem 'IDateEditor' Schnittstelle spezifiziert sind. – trashgod

+0

gibt es zwei Bibliotheken jcalendar. In einem Fall ist die Methode setSelectableDataRange definiert, aber nicht der addDateListener. In der anderen ist definiert, AddDateListener, aber nicht setSelectableDataRange .. Wie kann ich es lösen? Ich brauche beide Methoden. andernfalls, wenn ich die Bibliothek verwende, in der setSelectableDateRange definiert ist, wie kann ich Datum vom Benutzer angeklickt bekommen, um dieses Datum zu einem jtextfield hinzuzufügen? – JackTurky

+0

@ user1190704 - Hm! Das ist schwierig. Bitte konsultieren Sie den Code in der bearbeiteten Antwort. –