Hallo
ich habe ein Problem mit einem Button in meinem Program.
Ich habe einen Button, der eine Berechnung starten soll, daneben is ein Panel, welches vorher gruen war.
Wenn der Button geklickt wird, soll der Button passiv werden und das Panel (progresspanel) rot, nach der Berechnung sollte es wieder gruen werden und der Button auch wieder enabled werden.
So - ich habe es genau in der Reihenfolge eingetippst (s.u.):
progresspanel soll rot werden
butOption[1] soll disabled werden
start() - Berechnung soll starten
butOptions[1] soll wieder enabled werden
progresspanel soll wieder gruen werden
Mein Programm jedoch zieht lieber folgende Reihnefolge vor:
start() - Berechnung starten (der Button sieht weiterhin "gedrueckt" aus??!!!)
progresspanel wird rot (DANACH!!!)
butOptions[1] wird disabled
butOptions[1] wird wieder enabled
progresspanel wird wieder gruen
Ich denke, dass es was mit der Aktualisierung der Anzeige, zu tun hat - aber wie kann ich den gedrueckten Button wieder enddruecken und ihn eben disablen, das Panel rot werden lassen und VOR der Berechnung???
So sieht das daemlich aus!!!
Mein Code dazu:
ich habe ein Problem mit einem Button in meinem Program.
Ich habe einen Button, der eine Berechnung starten soll, daneben is ein Panel, welches vorher gruen war.
Wenn der Button geklickt wird, soll der Button passiv werden und das Panel (progresspanel) rot, nach der Berechnung sollte es wieder gruen werden und der Button auch wieder enabled werden.
So - ich habe es genau in der Reihenfolge eingetippst (s.u.):
progresspanel soll rot werden
butOption[1] soll disabled werden
start() - Berechnung soll starten
butOptions[1] soll wieder enabled werden
progresspanel soll wieder gruen werden
Mein Programm jedoch zieht lieber folgende Reihnefolge vor:
start() - Berechnung starten (der Button sieht weiterhin "gedrueckt" aus??!!!)
progresspanel wird rot (DANACH!!!)
butOptions[1] wird disabled
butOptions[1] wird wieder enabled
progresspanel wird wieder gruen
Ich denke, dass es was mit der Aktualisierung der Anzeige, zu tun hat - aber wie kann ich den gedrueckten Button wieder enddruecken und ihn eben disablen, das Panel rot werden lassen und VOR der Berechnung???
So sieht das daemlich aus!!!
Mein Code dazu:
Code:
// butOption ist ein Array von drei Buttons
//... for Schleife fuer die drei Buttons..., dann ActionListener fuer jeden innerhalb der Schleife
butOptions[cnt].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
if((ae.getSource()).equals((JButton) butOptions[0])){
System.exit(0);
}else if((ae.getSource()).equals((JButton) butOptions[1])){
progresspanel.setBackground(Color.RED); // wenn dieser Button gedrueckt wird sollte dader Button passiv werden und ein Panel auf rot gesetzt werden
butOptions[1].setEnabled(false);
start();
}else if((ae.getSource()).equals((JButton) butOptions[2])){
StdDialog.setDefaultLookAndFeelDecorated(true);
StdDialog hf = new StdDialog(lang.getSzHelpHeader(), lang.getSzInstructions());
}
}
});
//... nach der Schleife haeng ich ein gruenes Panel ein
progresspanel = new JPanel();
progresspanel.setBackground(Color.GREEN);
this.add(progresspanel);
//... in der Funktion start() wird eine Berechnung durchgefuehrt
protected void start(){
System.out.println("ButtonArrayPanel::start() - start");// zeigt mir dass die Funktion begonnen wurde
sg.process(lang); // hier werden Daten geladen, berechnet und wieder gespeichert
butOptions[1].setEnabled(true); // soll den Button wieder enablen und das nun rote Panel wieder auf gruen setzen
progresspanel.setBackground(Color.GREEN);
System.out.println("ButtonArrayPanel::start() - end");//
}
//...