Как я могу отключить все изображения для меню JFace, но оставить их включенными на панели инструментов - PullRequest
0 голосов
/ 09 апреля 2009

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

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

Ответы [ 3 ]

1 голос
/ 25 сентября 2009

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

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

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

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

0 голосов
/ 13 мая 2009

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

0 голосов
/ 09 апреля 2009

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

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...