2012-03-19 4 views
1

Я пытаюсь динамически отображать/скрывать (или создавать/удалять) SWT-меню (через JFace MenuManager) во время выполнения на основе простого события. Более конкретно, когда активируется требуемое управление, я хотел бы показать дополнительное меню в строке меню. Как только он будет отключен, новое меню должно исчезнуть. Что-то вроде этого:Отображение/скрытие SWT-меню во время выполнения

addListener(SWT.Activate, new Listener(){ 
    public void handleEvent(Event event) { 
     showAdditionalMenuManager(); 
    } 
}); 

addListener(SWT.Deactivate, new Listener(){ 
    public void handleEvent(Event event) { 
     hideAdditionalMenuManager(); 
    } 
}); 

слушателей, безусловно, работать, но я старался как SetVisible() и утилизация/воссоздание меню (Уничтожение дает результаты, воссоздание не делает), не повез. Любая помощь приветствуется.

+1

Если вы разрабатываете приложение на основе RCP, рассмотрите возможность использования выражения visibleWhen в объявлении подменю. –

+0

Можете ли вы дать дополнительную информацию с содержанием двух методов show/hide? –

+0

@TonnyMadsen Это не приложение на основе RCP. Способы такие же простые, как, например, addMenuManager.setVisible (false) или дополнительныйMenuManager. распоряжаться(). Кстати, метод setVisible() работает, но только во время запуска (при построении оболочки). –

ответ

1

Хмм, я подозреваю, что менеджер родительского меню не обновляется должным образом ... здесь нет автоматики ... Вы также должны позвонить parent.updateAll(true) на родителя. И, возможно, parent.remove(additionalMenuManager).

Смежные вопросы