Java JToolbar中JButton中的AbstractAction(无文本)

Java JToolbar中JButton中的AbstractAction(无文本),java,swing,icons,jbutton,jtoolbar,Java,Swing,Icons,Jbutton,Jtoolbar,我的java swing应用程序有一些抽象操作,在两个jMenuItem中都使用 还有钮扣。我想把其中的一些放在JButton中的JToolbar中,但是 我只想显示图标,而不是文本。有没有最佳实践方法 要执行此操作?您可以将键的值设置为null或空字符串 putValue(Action.NAME, null); 附录:为方便用户,将上一个字符串放在Action.SHORT_DESCRIPTION中,它将成为按钮的工具文本 最简单的方法是将共享操作添加到工具栏,这将自动隐藏文本: Action

我的java swing应用程序有一些抽象操作,在两个jMenuItem中都使用 还有钮扣。我想把其中的一些放在JButton中的JToolbar中,但是 我只想显示图标,而不是文本。有没有最佳实践方法
要执行此操作?

您可以将键的值设置为
null
或空
字符串

putValue(Action.NAME, null);

附录:为方便用户,将上一个字符串放在
Action.SHORT_DESCRIPTION
中,它将成为按钮的
工具文本

最简单的方法是将共享操作添加到工具栏,这将自动隐藏文本:

Action sharedAction = new AbstractAction("some text") {
    ....
} 
sharedAction.putValue(Action.SMALL_ICON, someIcon);
myToolBar.add(sharedAction);
myNormalButton.setAction(sharedAction);
如果出于某种原因希望手动在工具栏中创建按钮,则必须在将按钮添加到工具栏之前将其hideActionText属性配置为true

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

对于,执行相反的操作,即将属性设置为false:

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

与创建和添加JButton相比,它的优势在于将按钮配置为适合JToolBar的所有内部侦听器

在我的例子中,我观察到,如果我只是将动作添加到JToolBar中,文本不会出现,因此请确保将动作放在JButton中

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

呃。。。不(至少我理解这个问题:一个操作的文本和图标由一个普通按钮和一个工具栏按钮共享,前者显示文本和图标,后者只显示图标)啊,我认为一个
操作的两个图标和两个按钮中的文本都相同。。这不是添加到工具栏的操作的默认行为吗?+1表示
hideActionText()
,即approach.hmm。。所以你的目标与操作相反,那就是你想让文本出现在工具栏上?没错,嗯,也许我不应该把它贴在这里,因为它可能会让人困惑。我在任何地方都没有找到如何向AbstractAction添加文本和图标,之后我意识到,如果将AbstractAction添加到JButton,您将同时看到这两个按钮,否则只会显示图标。