【问题标题】:How can I disable all images for an JFace menu but leave them enabled in the toolbar如何禁用 JFace 菜单的所有图像但在工具栏中启用它们
【发布时间】:2010-05-11 00:00:05
【问题描述】:

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

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

【问题讨论】:

    标签: java swt jface


    【解决方案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 以用于菜单版本。

    【讨论】:

      【解决方案2】:

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

      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
      }
      

      【讨论】:

      • 不幸的是,据我所知,这无济于事 --- 工具栏和菜单使用相同的操作,因此 getStyle 值在任何一种情况下都是相同的。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-18
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多