Hallo!
Ich versuche derzeit mittles FlowLayout und JButtons einen Zeitplan zu erstellen.
Optisch schaut dieser so aus:
In der ersten Zeile gehen über die gesamte Breite 4 JPanels die die jeweilige Stunde im 15 Minuten Takt enthalten z.B. 16:00, 16:15, 16:30; 16:45. Jedes JPanel ist gleich breit
Darunter gibt es eine Zeile mit JButtons die normalerweise gleich Breit sind wie die JPanels es sei denn es gibt einen Termin z.B.: zwischen 16:00 und 16:15, in diesem Fall hat der JButton die doppelte Breite, es kann aber auch die dreifache oder virefache sein.
Mein Problem ist nun folgendes:
Ich weiß im Vorfeld nicht wie breit der jeweilige JButton sein muss, sondern ich muss z.B. in einem Scheifendurchlauf auf den vorherigen JButton zugreifen und die Breite verändern und genau das ist mein Problme ich bekomme es nicht hin. In der Webanwendung habe ich es genauso mit Vaadin schön realisieren können nur in Swing will es mir nicht gelingen.
Hier ist der entscheidende Codeabschnitt:
Was ist hier mein Denkfehler?
Danke für eure Hilfe!
Florian
Ich versuche derzeit mittles FlowLayout und JButtons einen Zeitplan zu erstellen.
Optisch schaut dieser so aus:
In der ersten Zeile gehen über die gesamte Breite 4 JPanels die die jeweilige Stunde im 15 Minuten Takt enthalten z.B. 16:00, 16:15, 16:30; 16:45. Jedes JPanel ist gleich breit
Darunter gibt es eine Zeile mit JButtons die normalerweise gleich Breit sind wie die JPanels es sei denn es gibt einen Termin z.B.: zwischen 16:00 und 16:15, in diesem Fall hat der JButton die doppelte Breite, es kann aber auch die dreifache oder virefache sein.
Mein Problem ist nun folgendes:
Ich weiß im Vorfeld nicht wie breit der jeweilige JButton sein muss, sondern ich muss z.B. in einem Scheifendurchlauf auf den vorherigen JButton zugreifen und die Breite verändern und genau das ist mein Problme ich bekomme es nicht hin. In der Webanwendung habe ich es genauso mit Vaadin schön realisieren können nur in Swing will es mir nicht gelingen.
Hier ist der entscheidende Codeabschnitt:
Java:
// We check if a reservation exists for the current time
if(controller.courtReservationExist(court, rowStartTime, rowEndTime)) {
System.out.println("Court reservation exists on court "+court.getNumber()+" between "+rowStartTime+" and "+rowEndTime);
reservation = controller.getReservations(court, rowStartTime, rowEndTime).get(0);
List<Player> temp = Arrays.asList(reservation.getPlayers());
for(int i=0; i< temp.size(); i++) {
if(temp.get(i).isGuest()) {
//buttonText += temp.get(i).getGuest().getName();
}
else {
buttonText += temp.get(i).getMember().getSurname()+" "+temp.get(i).getMember().getFirstname();
}
if(i%2 == 1)
buttonText += "\n";
else
buttonText += "/";
}
System.out.println("FormerReservation: "+formerReservation.getPid());
System.out.println("CurrentReservation: "+reservation.getPid());
// Now we check if the found reservation is identically with the formerReservation
if(reservation.getPid() == formerReservation.getPid()) {
buttonWidth = buttonWidth+elementWidth;
System.out.println("Enlarge former reservation");
// We need to get the tempLayout of the former loop
tempLayout = (JButton) this.getComponent(this.getComponentCount()-1);
tempLayout.setPreferredSize(new Dimension(buttonWidth,50));
System.out.println("Button width: "+buttonWidth);
}
// if the former reservation is not identically with the current reservation a new reservation field is created
else {
System.out.println("Add new reservation");
buttonWidth = elementWidth;
System.out.println("Button width: "+buttonWidth);
// Now we create a button which can be clicked
button = new JButton() {
private static final long serialVersionUID = 8392427732936504464L;
public Dimension getPreferredSize(){
System.out.println("Else button width: "+buttonWidth);
return new Dimension(elementWidth,50);
}};
button.setFont(new Font("Lucida Grande", Font.BOLD, 18));
button.setForeground(Color.BLACK);
button.setBackground(Color.WHITE);
button.setText(buttonText);
button.setHorizontalAlignment(SwingConstants.CENTER);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("Ausgewählte StartZeit: "+rowStartTime);
System.out.println("Ausgewählte EndZeit: "+rowEndTime);
}});
add(button);
formerReservation = reservation;
}
}
else {
System.out.println("No reservation");
reservation = new Reservation();
buttonWidth = elementWidth;
button = new JButton() {
private static final long serialVersionUID = 8392427732936504464L;
public Dimension getPreferredSize(){
return new Dimension(elementWidth,50);
}};
button.setFont(new Font("Lucida Grande", Font.BOLD, 18));
button.setForeground(Color.BLACK);
button.setBackground(Color.WHITE);
button.setText(buttonText);
button.setHorizontalAlignment(SwingConstants.CENTER);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("Ausgewählte StartZeit: "+rowStartTime);
System.out.println("Ausgewählte EndZeit: "+rowEndTime);
}});
add(button);
}
Was ist hier mein Denkfehler?
Danke für eure Hilfe!
Florian