ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
1532
1532
EMPFEHLEN
-
10.07.08 23:39 #1
- 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
-
11.07.08 00:34 #2
- Registriert seit
- Mar 2007
- Ort
- Frankfurt am Main
- Beiträge
- 67
Hallo,
hättest du vllt ein Stück Beispiel-Code zur Hand?
-
11.07.08 08:36 #3
- 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:
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?
-
11.07.08 10:10 #4
- 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?
-
11.07.08 16:20 #5
- 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.
-
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!
-
11.07.08 16:39 #7
- 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)
-
11.07.08 17:41 #8
- Registriert seit
- Mar 2007
- Ort
- Frankfurt am Main
- Beiträge
- 67
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...
-
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
-
Action für JMenuItem/JButton UND windowClosingEvent
Von mas666 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 11.02.09, 09:35 -
action script2 vs action script1
Von John86 im Forum Flash PlattformAntworten: 1Letzter Beitrag: 26.06.07, 14:39 -
Problem miit: action='index.php?action=weiter
Von NetPerformance im Forum PHPAntworten: 8Letzter Beitrag: 20.10.05, 13:53 -
JButton action performed liefert nur lokale Variablen?
Von BenderUnit22 im Forum JavaAntworten: 3Letzter Beitrag: 31.01.05, 13:03 -
Struts Action auf andere Action umleiten und Parameter übergeben
Von mungoparks im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 2Letzter Beitrag: 28.01.05, 18:28





Zitieren
Login





