2012-04-15 3 views
2

Meine Java Swing App hat einige AbstractActions, die in JMenuItems und JButtons verwendet werden. Ich möchte einige von ihnen in eine JToolbar in einem JButton einfügen, aber Ich möchte nur das Symbol anzeigen, nicht den Text. Gibt es einen Best Practice Weg dies zu tun?AbstractAction in JButton in JToolbar ohne Text

+0

hmm .. ist das Standardverhalten einer Aktion nicht zu einer Symbolleiste hinzugefügt? – kleopatra

Antwort

10

am einfachsten ist es, die gemeinsame Aktion in die Symbolleiste hinzufügen, wird dies den Text automatisch ausgeblendet:

Action sharedAction = new AbstractAction("some text") { 
    .... 
} 
sharedAction.putValue(Action.SMALL_ICON, someIcon); 
myToolBar.add(sharedAction); 
myNormalButton.setAction(sharedAction); 

aus irgendeinem Grund Wenn Sie auf die Schaltfläche in der Symbolleiste manuell erstellen möchten, müssen Sie seine hideActionText konfigurieren Eigenschaft auf true, bevor die Schaltfläche in der Symbolleiste

JButton manual = new JButton(sharedAction); 
manual.setHideActionText(true); 
myToolBar.add(manual); 

aktualisieren

Zugabe fo r die inverse requirement, solved in another answer, tun das inverse, dh die Eigenschaft auf false gesetzt:

AbstractButton button = myToolBar.add(sharedAction); 
button.setHideActionText(false); 

Der Vorteil gegenüber Erstellen und Hinzufügen einer JButton ist die Schaltfläche als geeignet für eine JToolBar mit allen internen Hörern anstelle konfiguriert haben.

+2

+1 für 'hideActionText()', was der [empfohlene] (http://docs.oracle.com/javase/6/docs/api/javax/swing/Action.html) Ansatz ist. – trashgod

1

Sie können den Wert für den Schlüssel Action.NAME auf null oder einen leeren Wert String festlegen.

putValue(Action.NAME, null); 

Nachtrag: Als Erleichterung für die Benutzer, setzt die vorherige Zeichenfolge in Action.SHORT_DESCRIPTION, wo es die Schaltfläche werden wird toolTipText.

+0

ehhh ... nein (zumindest so, wie ich die Frage verstehe: eine Aktion mit Text und Icon, geteilt durch eine einfache Schaltfläche und eine Symbolleistenschaltfläche, die sowohl Text als auch Symbol auf der vorherigen und nur das Symbol auf letzterer zeigt) – kleopatra

+0

Ich habe eine "Aktion" mit dem gleichen Symbol in beiden und Text in keiner. – trashgod

1

In meinem Fall beobachtete ich, dass, wenn ich nur die Aktion der JToolBar hinzufügen der Text nicht erscheint, so stellen Sie sicher, dass Sie die Aktion in einem JButton setzen.

JToolBar tb = new JToolBar(); 
tb.add(new JButton(sharedAction)); 
+0

hmm .. so ist Ihr Ziel das Gegenteil von den OP's, das ist _want_ der Text in der Symbolleiste erscheinen? – kleopatra

+0

Genau, hmm, vielleicht hätte ich das hier nicht posten sollen, da es vielleicht verwirrend ist. Ich habe nirgends gefunden, wie man Text und Icon zu AbstractAction hinzufügen kann. Danach habe ich gemerkt, dass wenn Sie die AbstractAction zu einem JButton hinzufügen, Sie beide sehen, ansonsten erscheint nur das Icon. – dalvarezmartinez1

Verwandte Themen