item de menu accel obras fundamentais somente após item de menu foi mostrado
Pergunta
Estou desenvolvendo um aplicativo SWT / JFace usando as bibliotecas do Eclipse 3.4.1. I encontrar o seguinte problema no Windows (Vista 32 bits) e Ubuntu 8.10 32 bits:
I criar uma barra de menu no método createMenuManager do JFace ApplicationWindow. Acrescento MenuManagers para o arquivo, editar e ajuda.
Em seguida, adicione um ExitAction para o arquivo MenuManager assim:
filemenu.add(new ExitAction(this));
O ExitAction é definido da seguinte maneira:
public class ExitAction extends Action {
final ApplicationWindow window;
public ExitAction(ApplicationWindow w) {
this.window = w;
setText("E&xit");
setToolTipText("Exit the application");
setAccelerator(SWT.MOD1 + 'Q');
}
}
Agora quando meu aplicativo é iniciado Eu quero ser capaz de pressionar "CTRL + Q" para sair da aplicação. Este, porém, não funciona. Só depois que eu clicar em "Arquivo" na barra de menu e depois clicar em "CTRL + Q" o aplicativo irá parar.
Eu tentei isso com diferentes mesmo comportamento accelerators-.
Ele faz o trabalho no entanto, se eu criar um "MenuItem" em vez de uma "ação" para contribuir para a barra de menu.
É este bug um SWT ou eu perdi alguma coisa?
Torsten.
Solução
Update: Há um bug duplicado da mina, que também contém uma solução alternativa. O url bug é: https://bugs.eclipse.org/bugs/show_bug .cgi? id = 243758
Basicamente, a solução é chamar create()
na ApplicationWindow
e depois getMenuBarManager().updateAll(true);
que forçará todos os itens de menu para obter inicializado.
É claro que você tem que chamar os métodos acima depois de criar os itens do menu.
Outras dicas
AFAIK setAccelerator(.)
não faz nada mais do que adicionar o texto apropriado para o seu MenuItem
. Você é responsável para se registrar para um evento KeyUp
e reagir a ele.
Você pode usar Display.addFilter(SWT.KeyUp, myListener)
para registrar o seu Listener
independentemente de seus widgets.
Acontece que este é um bug no Eclipse 3.4. I apresentaram um relatório de bug: https://bugs.eclipse.org/bugs /show_bug.cgi?id=253078