3

我的 java swing 应用程序有一些在 JMenuItems 和 JButtons 中使用的 AbstractActions。我想将其中一些放在 JButton 内的 JToolbar 中,但我只想显示图标,而不是文本。是否有最佳实践方法来做到这一点?

4

3 回答 3

11

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

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 并配备所有内部侦听器。

于 2012-04-15T14:39:03.900 回答
1

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

JToolBar tb = new JToolBar();
tb.add(new JButton(sharedAction));
于 2013-07-30T10:42:31.310 回答
1

您可以将键的值设置为Action.NAMEnull为空String

putValue(Action.NAME, null);

附录:为方便用户,将之前的字符串放入 中Action.SHORT_DESCRIPTION,它将成为按钮的toolTipText.

于 2012-04-15T02:15:36.310 回答