JBoolton中的抽象动作在没有文本的JToolbar中

时间:2012-04-15 01:10:46

标签: java swing icons jbutton jtoolbar

我的java swing应用程序有一些在JMenuItems中使用的AbstractActions 和JButtons。我想把它们中的一些放在JButton里面的JToolbar中,但是 我只想要显示图标,而不是文本。是否有最佳实践方法 这样做?

3 个答案:

答案 0 :(得分:10)

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

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);

<强>更新

对于inverse requirement, solved in another answer,执行反向操作,即将属性设置为false:

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

创建和添加JButton的优势在于,为所有内部侦听器配置了适合JToolBar的按钮。

答案 1 :(得分:1)

您可以将键Action.NAME的值设置为null或空String

putValue(Action.NAME, null);

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

答案 2 :(得分:1)

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

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