0

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

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

4

3 回答 3

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 以用于菜单版本。

于 2009-09-25T19:17:44.540 回答
0

我自己没有检查过这个,但是给这个方法看看:

public int getStyle() { ... }

它在 Action 类中定义,它似乎返回了 Action 以图形方式表示的界面元素的类型。那么你可以覆盖 getImageDescriptor() 方法:

public ImageDescriptor getImageDescriptor() {
    if (getStyle() == AS_DROP_DOWN_MENU)
        return null; // No icon in a menu
    return someImageDescriptor; // Actual icon
}
于 2009-04-09T16:51:49.567 回答
0

我最终基本上复制了动作,配对,一个有图像,一个没有,因此首先消除了动作的好处(叹气)。另一方面,由于每个动作都只是调用控制器中的一个方法来执行工作,所以它并不太隐蔽,将这些对组合在一起可以合理地清楚发生了什么。

于 2009-05-13T11:07:03.210 回答