如何禁用JFace菜单的所有图像,但在工具栏中保留它们

时间:2009-04-09 15:56:35

标签: java swt jface

如果我创建了一组要在JFace应用程序中使用的动作,并且我将图像分配给这些动作,那些图像将显示在工具栏(我想要它们)和菜单(我不想要的地方)中它们)。

除了提供两组完全独立的动作(首先消除了部分操作点)之外,我如何安排将这些图像仅显示在工具栏中,并让菜单只显示文本? / p>

3 个答案:

答案 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)

我最终基本上复制了动作,制作了一对,一个带有图像,一个没有,从而首先消除了动作的好处(叹息)。另一方面,由于每个动作只是在控制器中调用一个方法来执行工作,所以它并不太隐蔽,并且将这些对分组在一起使得它相当清楚发生了什么。