Kontext
Ich arbeite an einer javabasierten Desktop-Anwendung, die Klassenraumreservierungen für eine Highschool vornimmt. Jede Reservierung wird in einem Objekt der Klasse RoomBooking gespeichert, dessen Inhalt wie folgt aussieht (vereinfacht):
public class RoomBooking implements java.io.Serializable {
private int id;
private String roomName, userName;
private Date bookDate;
private int beginTime;
// represents the reservation begin time (i.e. 8 means 08.00)
private int endTime;
// represents the reservation end time (i.e. 9 means 09.00)
private int roomId;
//Constructor and setters-getters follow the above code
.....
}
Ich rufe die Reservierungen aus der Datenbank ab und lege sie in ein ArrayList-Objekt, das eine Instanzliste der Klasse RoomBooking (d.h. ArrayList) enthält. Die Reihenfolge der Objekte in der Liste basiert auf dem Reservierungsdatum in aufsteigender Reihenfolge.
Problemstellung
Jetzt versuche ich, eine Swing-basierte UI (d.h. JFrame) zu erstellen, die eine 5 x 7 Grid-Ansicht mit JTable zeigt (Es sollte wie ein tabellarischer Kalender genau wie Google Kalender aussehen). Die Spalten der JTable sollte wie Montag, Dienstag....Sonntag und die Zellen in der JTable wird die Tage eines bestimmten Monats von 1 bis 28, 30 oder 31 je nach Monat (z. B. 28 für Februar) halten. Hier geht es darum, eine Zelle, für die eine Reservierung vorliegt, einzufärben und einen informativen Text darin zu platzieren (z. B. Reservierungszeitintervall wie 08.00 - 09.00)
In Anbetracht der Tatsache, dass die Daten in der zuvor erwähnten ArrayList linear und nach dem Reservierungsdatum geordnet sind, muss ich jede Reservierung einer bestimmten Zelle in der so genannten JTable zuordnen.
Zu diesem Zweck habe ich versucht, eine Methode zu schreiben, die das Datum für eine Reservierung empfängt und die entsprechende Zeilen- und Spaltennummer der entsprechenden Zelle in der J-Tabelle zurückgibt. Dies führt zu mehreren Nebenproblemen. Wenn zum Beispiel der erste Tag des Monats nicht am Montag beginnt, sollte die oben genannte Methode in der Lage sein, die Zeilen- und Spaltenindizes, die sie zurückgibt, entsprechend zu verschieben.
Frage
i) Wissen Sie, ob es eine frei verfügbare Java-Bean-Komponente gibt, die eine tabellarische Kalenderansicht bereitstellt, deren Spalten die Tage der Wochen und die Zellen die Tage des Monats sind (die Zellen sollten in der Lage sein, zusätzliche Daten in Textform wie 08.00-09.00 aufzunehmen)?
Ich habe bei meiner Google-Suche einige kommerzielle Lösungen gefunden, aber ich bin an Open-Source-Lösungen/Vorschlägen interessiert. Ich stehe ein wenig unter Druck und eine gebrauchsfertige Komponente wäre mir sehr willkommen.
ii) Hatte jemand ein ähnliches Problem wie das in der Problemstellung beschriebene? Wenn ja, könnten Sie mir bitte einige Leitlinien zum Schreiben der so genannten Mapper-Methode geben.
Für jede Anregung/Hilfe wäre ich sehr dankbar.
Vielen Dank im Voraus.
Mit freundlichen Grüßen, Farda