Как отключить все изображения для меню JFace, но оставить их включенными на панели инструментов

StackOverflow https://stackoverflow.com/questions/734841

  •  09-09-2019
  •  | 
  •  

Вопрос

Если я создаю набор действий для использования в приложении JFace и назначаю этим действиям изображения, эти изображения отображаются как на панели инструментов (где они мне нужны), так и в меню (где они мне не нужны).

Помимо предоставления двух совершенно отдельных наборов действий (что в первую очередь устраняет часть сути действий), как я могу организовать, чтобы эти изображения отображались ТОЛЬКО на панели инструментов, а в меню отображался только текст?

Это было полезно?

Решение 3

В итоге я по сути дублировал действия, создавая пары, одно с изображением, другое без, тем самым в первую очередь исключая пользу от действий (вздох).С другой стороны, поскольку каждое действие просто вызывает один метод в контроллере для выполнения работы, это не слишком коварно, а группировка пар вместе дает достаточно ясное представление о том, что происходит.

Другие советы

Я тоже столкнулся с этой проблемой (за исключением того, что мне нужен был другой текст для панели инструментов и меню). В итоге я использовал одно и то же действие, но в двух разных его экземплярах.

// Use this one in the menu
Action a = new Action();

// Use this one in the toolbar
Action a2 = new Action();
a2.setImageDescriptor(img);

Альтернативно вы можете сохранить дескриптор изображения в действии для версии панели инструментов и установить для него значение null для версии меню.

Я сам это не проверял, но посмотрите на этот метод:

public int getStyle() { ... }

Он определен в классе Action и, похоже, возвращает тип элемента интерфейса, в котором графически представлено действие.Итак, вы можете переопределить метод getImageDescriptor():

public ImageDescriptor getImageDescriptor() {
    if (getStyle() == AS_DROP_DOWN_MENU)
        return null; // No icon in a menu
    return someImageDescriptor; // Actual icon
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top