tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
1532
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Hallo,

    ich würde gerne eine AbstractAction (javax.swing.AbstractAction) mehrere JButtons hinzufügen. Was ich jedoch nicht möchte ist, dass der Text der Action den Text des Button setzt.

    Da ich für die Buttons leicht verschiedene Beschriftungen benötige, ist es ärgerlich, dass das Setzen der Action die Beschriftung der Buttons ändert.

    Kann man das irgendwie verhindern?


    Vielen Dank für Eure Hilfe
     

  2. #2
    Tomek_FFM Tomek_FFM ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Ort
    Frankfurt am Main
    Beiträge
    67
    Hallo,
    hättest du vllt ein Stück Beispiel-Code zur Hand?
     

  3. #3
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Hallo,

    ich "konstruier" mal etwas, ist aus dem Kopf geschrieben, also keine Garantie Aber es spiegelt exakt die Problematik wieder:


    Eine Action wird definiert:

    Code java:
    1
    2
    3
    4
    5
    6
    
    public class MyAction extends AbstractSatelliteAction {
        @Override
        public void actionPerformed( ActionEvent e ) {
            System.out.println( "action" );
        }
    }

    Und so wird sie verwendet:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    
    // Irgendwo in einer GUI-Klasse:
     
    MyAction myAction = new MyAction();
     
    JButton button = new JButton
    button.setText("Action ausführen");
    button.setAction( myAction );



    Der Button hat dann nicht mehr den Text "Action ausführen", sondern gar keinen Text mehr (da ich den Text der Action nicht gesetzt habe). Ich möchte aber meine normale Button-Beschriftung erhalten. (Ich kann die Button-Klasse nicht verändern, z.B. ableiten, weil es sich um ein großes Projekt handelt und ich nicht anfange, alle Buttons zu ersetzen.)

    Also die Frage ist nochmal, kann ich verhindern, dass der Button den Action Text übernimmt?
     

  4. #4
    Tomek_FFM Tomek_FFM ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Ort
    Frankfurt am Main
    Beiträge
    67
    Hallo,
    und wenn du erst die Action und dann den Text setzt - d.h. die beiden entsprechenden Code-Zeilen vertauschst - müsste es doch gehen?
     

  5. #5
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Hi,

    das ist eben das Problem dieser konstruierten Beispiele Das obige ist viel zu trivial und spiegelt die Applikation nicht wieder, sondern nur die Problemstellung.

    Das Tauschen der beiden Zeilen ist keine annehmbare Lösung. Was, wenn später die Action nochmal gesetzt wird, oder durch eine andere aktualisiert wird?

    Ich dachte, man könne die Action irgendwie so parametrisieren, dass nur bestimmte Properties gesetzt werden. Ich glaube, das Setzen der Properteis wie z.B. der Buttontext kommt vom Button selbst, oder? Sonst hätte ich ja meine Action zu umschreiben können, dass das Text Property des Buttons nicht gesetzt wird, aber das geht glaube ich nicht.
     

  6. #6
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    Und wenn du in deiner Action einfach den Text holst und am Ende wieder setzt?

    ps: Keine Garantie, dass ich dein Problem verstanden habe
     
    Handlanger des Dr. Ex1tus

    Ich kenne Matzes dunkles Geheimnis ! oO

    o
    L_/
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.

    Hallo Nuray!

  7. #7
    Adrian_Broher Adrian_Broher ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    166
    Die Frage ist eher wieso du für die gleiche Aktion unterschiedliche Labels benötigst.

    Eine Aktion hat nunmal ein eindeutiges Label.

    Wenn du unterschiedliche Labels brauchst deutet das eher darauf hin, dass du unterschiedliche Aktionen hast, die dann in eigenen Ableitungen von AbstractAction umgesetzt werden sollten.
    Geändert von Adrian_Broher (11.07.08 um 16:42 Uhr)
     

  8. #8
    Tomek_FFM Tomek_FFM ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Ort
    Frankfurt am Main
    Beiträge
    67
    Zitat Zitat von DarthShader Beitrag anzeigen
    Hi,

    [... ]Ich glaube, das Setzen der Properteis wie z.B. der Buttontext kommt vom Button selbst, oder? Sonst hätte ich ja meine Action zu umschreiben können, dass das Text Property des Buttons nicht gesetzt wird, aber das geht glaube ich nicht.
    Da hast Du Recht. Sobald du setAction(...) ausführst wird unter anderem diese Methode aus der AbstractButton-Klasse ausgeführt:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    protected void configurePropertiesFromAction(Action a) {
            setMnemonicFromAction(a);
            setTextFromAction(a, false);
            AbstractAction.setToolTipTextFromAction(this, a);
            setIconFromAction(a);
            setActionCommandFromAction(a);
            AbstractAction.setEnabledFromAction(this, a);
            if (AbstractAction.hasSelectedKey(a) &&
                    shouldUpdateSelectedStateFromAction()) {
                setSelectedFromAction(a);
            }
            setDisplayedMnemonicIndexFromAction(a, false);
        }

    Dort wird auch der Text gesetzt...
     

  9. #9
    Avatar von procurve
    procurve procurve ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    158
    Die Lösung wäre also, eine eigene Klasse MyButton abzuleiten und die obene genannte Methode zu überschreiben.
    und darin dann kein setText() aufzurufen.
     

Ähnliche Themen

  1. Action für JMenuItem/JButton UND windowClosingEvent
    Von mas666 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 11.02.09, 09:35
  2. action script2 vs action script1
    Von John86 im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 26.06.07, 14:39
  3. Problem miit: action='index.php?action=weiter
    Von NetPerformance im Forum PHP
    Antworten: 8
    Letzter Beitrag: 20.10.05, 13:53
  4. Antworten: 3
    Letzter Beitrag: 31.01.05, 13:03
  5. Struts Action auf andere Action umleiten und Parameter übergeben
    Von mungoparks im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 28.01.05, 18:28