如果我创建了一组要在JFace应用程序中使用的动作,并且我将图像分配给这些动作,那些图像将显示在工具栏(我想要它们)和菜单(我不想要的地方)中它们)。
除了提供两组完全独立的动作(首先消除了部分操作点)之外,我如何安排将这些图像仅显示在工具栏中,并让菜单只显示文本? / p>
答案 0 :(得分:1)
我也遇到了这个问题(除了我想要工具栏和菜单的不同文本。)我最终使用相同的操作,但它有两个不同的实例。
// Use this one in the menu
Action a = new Action();
// Use this one in the toolbar
Action a2 = new Action();
a2.setImageDescriptor(img);
或者,您可以将图像描述符存储在工具栏版本的操作中,并将其设置为null以用于菜单版本。
答案 1 :(得分:0)
我自己没有检查过,但是请看一下这个方法:
public int getStyle() { ... }
它在Action类中定义,它似乎返回Action以图形方式表示的interface元素的类型。那么你可以覆盖getImageDescriptor()方法:
public ImageDescriptor getImageDescriptor() {
if (getStyle() == AS_DROP_DOWN_MENU)
return null; // No icon in a menu
return someImageDescriptor; // Actual icon
}
答案 2 :(得分:0)
我最终基本上复制了动作,制作了一对,一个带有图像,一个没有,从而首先消除了动作的好处(叹息)。另一方面,由于每个动作只是在控制器中调用一个方法来执行工作,所以它并不太隐蔽,并且将这些对分组在一起使得它相当清楚发生了什么。