Problem beim Enablen/Disablen von JButton :-(

vfl_freak

Premium-User
Moin,

ich habe ein JPanel in dem vier Button (nennen wir sie mal btnA bis btnD) zur Steuerung einer Bildanzeige enthalten sind. Die anzuzeigenden Bilder sind in einer HashMap enthalten.
Die entsprechenden Funktionen der Button sind:
A: "erstes Bild anzeigen"
B: "vorheriges Bild anzeigen"
C: "nächstes Bild anzeigen"
D: "letztes Bild anzeigen"

Grundlegend funktioniert das auch alles, allerdings möchte ich nun ggf. einzelne Button - je nach Zustand der Anzeige - enablen oder disablen.

Hierfür habe ich nun folgende Funktion:
Java:
public void setButtonEnabled()
{
    if( Bedingung_1 )
    {
        btnA.setEnabled( false );
        btnB.setEnabled( false );
        btnC.setEnabled( false );
        btnD.setEnabled( false );
    }
    else if( Bedingung_2 )
    {
        btnA.setEnabled( false );
        btnB.setEnabled( false );
        btnC.setEnabled( true );
        btnD.setEnabled( true );
    }
    else if( Bedingung_3 )
    {
        btnA.setEnabled( true );
        btnB.setEnabled( true );
        btnC.setEnabled( false );
        btnD.setEnabled( false );
    }
    // usw. .....
    
    validate();
    repaint();
} // setButtonEnabled
Sie wird an unterschiedlichsten Stellen im Programm aufgerufen, unter anderem auch in den jeweiligen actionPerformed-Methoden der zu den einzelnen Button gehörenden ActionListenern.

Wenn ich mich nun bspw. mit dem Button C ("nächstes Bild") durch die anzuzeigenden Bilder klicke und dann irgendwann auf dem letzten Bild bin, wäre die Bedingung 3 erfüllt und ich würde erwarten, dass die Button C und D disabled werden. Das Resultat ist nun aber, dass NUR der Button D disabled wird, während der gerade angeklickte Button C weiterhin sichtbar ist.

Dis passiert in allen programmierten Versionen, also etwa auch wenn ich mit Button B ("vorheriges Bild") zum ersten anzuzeigenden Bild laufe und somit die Bedingung 2 erfülle. Auch hier wird dann der Button A disabled, aber der gerade gedrückte Button B bleibt weiterin sichtbar.

Auch das Einfügen von 'validate' bzw. 'repaint' bringt nicht ...

Ich habe das Gefühl, dass die o. g. Methode innerhalb einer actionPerformed-Methode irgendwie für den zugehörigen Button nicht funktioniert!

Ist das wirklich so?
Wie könnte man das ändern ?

Danke und Gruß
Klaus


EDIT :
Hat sich erledigt - habe nach langer Suche eine Altlast im zugehörigen ActonAdapter gefunden :(
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück