Pergunta

É possível hotkeys atribuir e mnemônicos para os botões em um diálogo JOptionPane? Eu gostaria de ser capaz, em um diálogo de mensagem JOptionPane gerada com as opções sim, não e cancelar, pressione Y para acertar o botão Sim, N para acertar o botão Não e escapar para ativar o botão de fuga. Da mesma forma em um diálogo com botões Ok e Cancelar eu gostaria de ser capaz de ativá-los com enter e escapar.

Eu tenho tentado passar JButtons em matriz de objectos botão do JOptionPane com os mnemônicos já definido. Os mnemônicos trabalhar e os botões aparecem corretamente nas caixas de diálogo, no entanto, eles não agem corretamente quando eles são ativados. Mais notavelmente eles não descarte de diálogo.

O que é a maneira correta de adicionar atalhos e mnemônicos aos botões de um diálogo JOptionPane?

Foi útil?

Solução

Você pode criar seu JOptionPane, e depois percorrer os componentes do painel (crianças etc.) verificando se todos os componentes estão instanceof JButton, e se assim verificar o texto, e definir o mnemônico adequada.

JOptionPane p = new JOptionPane();
Component[] c = p.getComponents();

Outras dicas

Fazer uso de UIManager da seguinte forma:

UIManager.put("OptionPane.okButtonMnemonic", "79");  // for Setting 'O' as mnemonic
UIManager.put("OptionPane.cancelButtonMnemonic", "67"); // for Setting 'C' as mnemonic

Enviar os botões como parâmetros em vez de Cordas

    JButton button1 = new JButton( "<html>" + nextQuestion1 + "</html>");
    button1.setMnemonic('a');
    JButton button2 = new JButton(nextQuestion2 + "VUHU");
    JButton button3 = new JButton(abort);
    Object[] possibleValues = new Object[]{button1,button2,button3};
    int selectedValue = showOptionDialog(owner, question, possibleValues);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top