Pregunta

¿Es posible asignar teclas de acceso rápido y mnemotécnicos a los botones en un diálogo JOptionPane? Me gustaría ser capaz, en un diálogo de mensaje JOptionPane generado con las opciones Sí, No y Cancelar, presione Y para golpear el botón Sí, N para golpear el botón No y escapar para activar el botón de escape. Del mismo modo, en un cuadro de diálogo con los botones Cancelar bien y me gustaría ser capaz de activar con entrar y salir.

He intentado pasar JButtons en una matriz de objetos botón del JOptionPane con los mnemónicos ya ajustado. Los mnemónicos trabajan y los botones se muestran correctamente en los cuadros de diálogo, sin embargo, no actúan correctamente cuando se activan. Lo más notable que no disponen del diálogo.

¿Cuál es la forma correcta de añadir teclas de acceso rápido y Mnemónicos a los botones de un cuadro de diálogo JOptionPane?

¿Fue útil?

Solución

Puede crear su JOptionPane, y luego bucle a través de los componentes del panel (hijos, etc.) para comprobar si tiene alguna pieza instanceof JButton, y si a fin de comprobar el texto, y establecer la tecla de acceso adecuado.

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

Otros consejos

Hacer uso de UIManager de la siguiente manera:

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

Enviar los botones en como parámetros en lugar de cadenas

    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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top