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

use*_*568 2 java icons swing jbutton jtoolbar

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

kle*_*tra 10

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

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

如果由于某种原因您想手动在工具栏中创建按钮,则必须将其hideActionText属性配置为true,然后才能将按钮添加到工具栏

JButton manual = new JButton(sharedAction);
manual.setHideActionText(true);
myToolBar.add(manual);
Run Code Online (Sandbox Code Playgroud)

更新

对于反向需求,在另一个答案中解决,执行反向,即将属性设置为false:

AbstractButton button = myToolBar.add(sharedAction);
button.setHideActionText(false);
Run Code Online (Sandbox Code Playgroud)

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

  • 'hideActionText()`的+1,这是[推荐](http://docs.oracle.com/javase/6/docs/api/javax/swing/Action.html)方法. (2认同)