T
Taggert77
Gast
Hallo,
ich habe ein JPanel, welches durch einen Buttonklick aktualisiert werden soll. Es handelt sich um einen Kalender, der drei Monate als Übersicht anzeigt. Mit den Buttons "Vor" und "zurück" kann man dann die drei Monate immer um einen nach oben bz. unten schieben - so jedenfalls der Plan. Initial wird alles korrekt angezeigt, aber beim Druck auf den JButton wird nicht mehr neu gezeichnet.
Vielleicht könnt ihr mir helfen.
Vielen Dank für Eure Hilfe
Grüße Taggert
ich habe ein JPanel, welches durch einen Buttonklick aktualisiert werden soll. Es handelt sich um einen Kalender, der drei Monate als Übersicht anzeigt. Mit den Buttons "Vor" und "zurück" kann man dann die drei Monate immer um einen nach oben bz. unten schieben - so jedenfalls der Plan. Initial wird alles korrekt angezeigt, aber beim Druck auf den JButton wird nicht mehr neu gezeichnet.
Vielleicht könnt ihr mir helfen.
Code:
public class CalendarOverview extends JPanel implements ActionListener {
private static final int UPPERCALENDAR = 0;
private static final int MIDDLECALENDAR = 1;
private static final int LOWERCALENDAR = 2;
private int monthToDisplay;
private int yearToDisplay;
private JButton bPrevious;
private JButton bNext;
private JPanel threeMonthCalendar;
public CalendarOverview() {
GregorianCalendar cal = new GregorianCalendar();
monthToDisplay = cal.get(Calendar.MONTH);
yearToDisplay = cal.get(Calendar.YEAR);
this.setLayout(new BorderLayout());
this.setButtons();
threeMonthCalendar = this.drawCalendarPanal(monthToDisplay, yearToDisplay);
this.add(bPrevious, BorderLayout.NORTH);
this.add(threeMonthCalendar, BorderLayout.CENTER);
this.add(bNext, BorderLayout.SOUTH);
this.setBackground(Color.WHITE);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("prev")) {
System.out.println("Button prev pressed");
monthToDisplay--;
threeMonthCalendar.removeAll();
threeMonthCalendar = drawCalendarPanal(monthToDisplay, yearToDisplay);
threeMonthCalendar.validate();
this.repaint();
}
if (e.getActionCommand().equals("next")) {
}
}
public JPanel drawCalendarPanal(int year, int month) {
int upperMonth = month -1;
int lowerMonth = month + 1;
int upperYear = year;
int lowerYear = year;
//Die Methode getMonthsNames funktioniert zuverlässig
//Poste sie aber nicht, ab sie nicht relevant für das Problem ist
String[] monthNames = this.getMonthsNames(year, month);
if(month == 0){
upperMonth = 11;
upperYear = year-1;
}
if(month == 11)
{
lowerMonth = 0;
lowerYear = year+1;
}
JPanel panel = new JPanel();
panel.setBackground(Color.WHITE);
double size[][] = {{0.15, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.15,},
{TableLayout.FILL, 0.05, 0.033, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
0.05, 0.05, 0.06, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
0.05, 0.05, 0.06, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
TableLayout.FILL
}
};
panel.setLayout(new TableLayout(size));
panel.add(new JLabel(" "), " 1,0,7,0");
//panel.add(new JButton(monthNames[0]), " 1,1,7,1");
JLabel monthUpper = new JLabel(monthNames[0],JLabel.CENTER);
monthUpper.setOpaque(true);
monthUpper.setBackground(Color.lightGray);
panel.add(monthUpper, " 0,1,8,1");
panel.add(new JLabel(" "), " 1,9,7,9");
//panel.add(new JButton(monthNames[1]), " 1,10,7,10");
JLabel monthMiddle = new JLabel(monthNames[1],JLabel.CENTER);
monthMiddle.setOpaque(true);
monthMiddle.setBackground(Color.lightGray);
panel.add(monthMiddle, " 0,10,8,10");
panel.add(new JLabel(" "), " 1,18,7,18");
JLabel monthDown = new JLabel(monthNames[2],JLabel.CENTER);
monthDown.setOpaque(true);
monthDown.setBackground(Color.lightGray);
panel.add(monthDown, " 0,19,8,19");
....
// Die ganzen Labels für die einzelnen Tage der Monaet ersar ich Euch hier
...
panel.validate();
threeMonthCalendar = panel;
return panel;
}
private void setButtons() {
bPrevious = new JButton(MainFrame.bundle.getString("CALENDARDETAILS_PREVIOUS"));
bNext = new JButton(MainFrame.bundle.getString("CALENDARDETAILS_NEXT"));
bPrevious.addActionListener(this);
bNext.addActionListener(this);
bPrevious.setActionCommand("prev");
bNext.setActionCommand("next");
}
Vielen Dank für Eure Hilfe
Grüße Taggert