Code:
import java.awt.*;
import java.awt.event.*;
class KalenderFenster extends Frame implements ActionListener{
Kdaten daten = new Kdaten();
Label mNameLabel, wochenTag;
Label wochenTag1, wochenTag2, wochenTag3, wochenTag4, wochenTag5, wochenTag6, wochenTag7;
Panel ansicht;
GridLayout monat;
public KalenderFenster() {
setLocation(20,20);
setSize(800,520);
setTitle("Kalender");
setResizable(false);
setLayout(null);
addWindowListener(new WindowsAdapter (true));
//erstellen der menuleiste
MenuBar leiste1 = new MenuBar();
//////////////////////////////////////////////////////////////////////////
// menue 1
Menu programm = new Menu("Programm");
MenuItem mi;
MenuShortcut key;
// erstellen der shortcuts
key = new MenuShortcut(KeyEvent.VK_W);
mi = new MenuItem("Wochenansicht", key);
mi.addActionListener(this);
programm.add (mi);
key = new MenuShortcut(KeyEvent.VK_M);
mi = new MenuItem("Monatsansicht", key);
mi.addActionListener(this);
programm.add (mi);
key = new MenuShortcut (KeyEvent.VK_J);
mi = new MenuItem("Jahresansicht", key);
mi.addActionListener(this);
programm.add(mi);
key = new MenuShortcut(KeyEvent.VK_B);
mi = new MenuItem("Beenden", key);
mi.addActionListener(this);
programm.add(mi);
///////////////////////////////////////////////////////////////
// menue 2
Menu programm2 = new Menu ("Termineintrag");
key = new MenuShortcut(KeyEvent.VK_T);
mi = new MenuItem("neuer Termin", key);
mi.addActionListener(this);
programm2.add(mi);
///////////////////////////////////////////////////////////////
GridLayout grid = new GridLayout(1,3);
Panel p1 = new Panel( grid );
p1.setLocation(0,50);
p1.setSize(800,30);
Button wo = new Button("Wochenansicht");
wo.addActionListener(this);
Button mo = new Button("Monatsansicht");
mo.addActionListener(this);
Button ja = new Button("Jahresansicht");
ja.addActionListener(this);
p1.add (wo);
p1.add (mo);
p1.add (ja);
leiste1.add(programm);
leiste1.add(programm2);
setMenuBar(leiste1);
add(p1);
//=========================================================//
/* anzeige des monats mit funktionen der vor und rückwertigen
* ansicht
**/
Panel mName = new Panel();
mName.setLocation(0,81);
mName.setSize(800,50);
mName.setBackground(Color.WHITE);
// platzhalter, ohne funktion
Label leer1 = new Label("");
leer1.setLocation(0,0);
leer1.setSize(250,50);
mName.add(leer1);
Button rev = new Button("<<");
rev.setLocation(250,0);
rev.setSize(30,50);
rev.addActionListener(this);
mName.add(rev);
// platzhalter, ohne funktion
Label leer2 = new Label("");
leer2.setLocation(280,0);
leer2.setSize(20,50);
mName.add(leer2);
//erstellen des labels zur anzeige des monatsnamens
mNameLabel = new Label(daten.nameMonat);
mNameLabel.setLocation(300,0);
mNameLabel.setSize(200,50);
mNameLabel.setFont (new Font ("ARIAL", 3,21));
mNameLabel.setForeground(Color.RED);
mName.add(mNameLabel);
//platzhalter, ohne funktion
Label leer3 = new Label ("");
leer3.setLocation(500,0);
leer3.setSize(20,50);
mName.add(leer3);
Button next = new Button(">>");
next.setLocation(520,0);
next.setSize(30,50);
next.addActionListener(this);
mName.add(next);
//platzhalter, ohne funktion
Label leer4 = new Label(" ");
leer4.setLocation(550,0);
leer4.setSize(250,50);
mName.add(leer4);
//=============================================================//
// funktionalitaet zur aufnahme der wochentage
Panel wochenTage = new Panel(new GridLayout (1,7));
wochenTage.setLocation(0,132);
wochenTage.setSize(800,30);
/*die label fuer die wochentage werden hier einzeln erstellt um
*nach der betaetigung eines den angezeigten monat aendernden buttens,
*auch die reihenfolge der angezeigten wochentage dem angezeigten
*monat entsprechend aendern zu koennen
*/
wochenTag1 = new Label(daten.tagName[0]);
wochenTag1.setFont (new Font("ARIAL", 3,16));
wochenTag1.setForeground(Color.BLACK);
wochenTage.add(wochenTag1);
wochenTag2 = new Label(daten.tagName[1]);
wochenTag2.setFont (new Font("ARIAL", 3,16));
wochenTag2.setForeground(Color.BLACK);
wochenTage.add(wochenTag2);
wochenTag3 = new Label(daten.tagName[2]);
wochenTag3.setFont (new Font("ARIAL", 3,16));
wochenTag3.setForeground(Color.BLACK);
wochenTage.add(wochenTag3);
wochenTag4 = new Label(daten.tagName[3]);
wochenTag4.setFont (new Font("ARIAL", 3,16));
wochenTag4.setForeground(Color.BLACK);
wochenTage.add(wochenTag4);
wochenTag5 = new Label(daten.tagName[4]);
wochenTag5.setFont (new Font("ARIAL", 3,16));
wochenTag5.setForeground(Color.BLACK);
wochenTage.add(wochenTag5);
wochenTag6 = new Label(daten.tagName[5]);
wochenTag6.setFont (new Font("ARIAL", 3,16));
wochenTag6.setForeground(Color.BLACK);
wochenTage.add(wochenTag6);
wochenTag7 = new Label(daten.tagName[6]);
wochenTag7.setFont (new Font("ARIAL", 3,16));
wochenTag7.setForeground(Color.BLACK);
wochenTage.add(wochenTag7);
///////////////////////////////////////////////////////////////////////////
monat = new GridLayout(0,7);
ansicht = new Panel(monat);
ansicht.setLocation(0,163);
ansicht.setSize(800,357);
ansicht.setBackground(Color.WHITE);
// funktionalitaet zur erstellung der button für die einzelnen tage
for (int i = 1 ; i < ((daten.mTage)+1) ; i++) {
// hilfsvariable um int i zu einem string umzuwandeln,
// der dann auf dem jeweiligen button steht
String j = String.valueOf(i);
Button tag = new Button( j );
tag.addActionListener(this);
tag.setBackground(daten.monatFarbe);
tag.setFont(new Font ("ARIAL", 0, 14));
tag.setForeground(Color.WHITE);
ansicht.add(tag);
}
add(mName);
add(wochenTage);
add(ansicht);
setVisible(true);
}
public void actionPerformed(ActionEvent ae){
String wert = ae.getActionCommand();
if (wert == "Wochenansicht"){
System.out.println("Wochenansicht");
}
else if (wert == "Monatsansicht"){
System.out.println("Monatsansicht");
}
else if (wert == "Jahresansicht"){
System.out.println("Jahresansicht");
}
else if (wert == "Beenden"){
System.exit(0);
}
else if (wert == "neuer Termin"){
new Ntermin();
}
else if(wert == "<<"){
daten.setMonat(daten.getMonat() -1);
mNameLabel.setText(daten.nameMonat);
// aktualisierung des wertes, der den ersten tag der woche bestimmt
daten.setWochenTag(daten.wochentage(daten.cal.get(daten.cal.DAY_OF_WEEK)));
/* aufruf der funktion zum ueberschreiben der label, die die
* wochentage anzeigen
*/
printWochenTage(wochenTag1,daten.tagName[0]);
printWochenTage(wochenTag2,daten.tagName[1]);
printWochenTage(wochenTag3,daten.tagName[2]);
printWochenTage(wochenTag4,daten.tagName[3]);
printWochenTage(wochenTag5,daten.tagName[4]);
printWochenTage(wochenTag6,daten.tagName[5]);
printWochenTage(wochenTag7,daten.tagName[6]);
daten.setmTage(daten.getMonat());
System.out.println("" + daten.mTage);
for (int i = 1 ; i < ((daten.mTage)+1) ; i++) {
// hilfsvariable um int i zu einem string umzuwandeln,
// der dann auf dem jeweiligen button steht
String j = String.valueOf(i);
Button tag = new Button( j );
System.out.println("Button Nummer : " + j);
// tag.addActionListener(this);
// tag.setBackground(daten.monatFarbe);
// tag.setFont(new Font ("ARIAL", 0, 14));
// tag.setForeground(Color.WHITE);
// ansicht.add(tag);
// this.ansicht = ansicht;
}
}
else if (wert == ">>"){
daten.setMonat(daten.getMonat() +1);
mNameLabel.setText(daten.nameMonat);
// aktualisierung des wertes, der den ersten tag der woche bestimmt
daten.setWochenTag(daten.wochentage(daten.cal.get(daten.cal.DAY_OF_WEEK)));
/* aufruf der funktion zum ueberschreiben der label, die die
* wochentage anzeigen
*/
printWochenTage(wochenTag1,daten.tagName[0]);
printWochenTage(wochenTag2,daten.tagName[1]);
printWochenTage(wochenTag3,daten.tagName[2]);
printWochenTage(wochenTag4,daten.tagName[3]);
printWochenTage(wochenTag5,daten.tagName[4]);
printWochenTage(wochenTag6,daten.tagName[5]);
printWochenTage(wochenTag7,daten.tagName[6]);
daten.setmTage(daten.getMonat());
System.out.println("" + daten.mTage);
remove(ansicht);
monat = new GridLayout(0,7);
ansicht = new Panel(monat);
ansicht.setLocation(0,163);
ansicht.setSize(800,357);
ansicht.setBackground(Color.WHITE);
// ansicht.setLayout(monat);
for (int i = 1 ; i < ((daten.mTage)+1) ; i++) {
// hilfsvariable um int i zu einem string umzuwandeln,
// der dann auf dem jeweiligen button steht
String j = String.valueOf(i);
Button tag = new Button( j );
System.out.println("Button Nummer : " + j);
// tag.addActionListener(this);
// tag.setBackground(daten.monatFarbe);
// tag.setFont(new Font ("ARIAL", 0, 14));
// tag.setForeground(Color.WHITE);
ansicht.add(tag);
}
add(ansicht);
}
else{
String monName = new Kdaten().nameMonat;
int wJahr = new Kdaten().zJahr;
new Termin(wert, monName, wJahr);
}
}
// funktion zum ueberschreiben der label mit den wochentagen
public void printWochenTage(Label l, String tag){
l.setText(tag);
l.setFont (new Font("ARIAL", 3,16));
l.setForeground(Color.BLACK);
}
}
Warum zeichnet er mir in der public void actionPerformed die Button nicht neu?
Er macht die richtige Anzahl durchläufe zur Erstellung der Button, aber er aktualisiert die Anzeige nicht.