AbstractAction in JButton in JToolbar without text



我的java swing应用程序有一些在JMenuItems中使用的抽象操作和JButtons。我想把它们中的一些放在 JButton 内的 JToolbar 中,但是我只希望显示图标,而不是文本。有没有最佳实践方法这样做?

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

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 相比,它的优点是可以根据需要配置按钮,并具有所有内部侦听器。

您可以将

Action.NAME的值设置为 null 或空String

putValue(Action.NAME, null);

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

就我而言,我观察到,如果我只是将动作添加到 JToolBar 中,文本就不会显示,因此请确保您将动作放在 JButton 中。

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

相关内容

  • 没有找到相关文章

最新更新