Domanda

E 'possibile assegnare tasti di scelta rapida e mnemonici ai pulsanti in una finestra di dialogo JOptionPane? Mi piacerebbe essere in grado, in una finestra di messaggio JOptionPane generato con le opzioni Sì, No e Annulla, premere Y per colpire il pulsante Sì, N per colpire il pulsante No e la fuga per attivare il pulsante di fuga. Allo stesso modo in una finestra di dialogo con i pulsanti Ok e Cancel mi piacerebbe essere in grado di attivarli con enter e fuggire.

Ho tentato passando JButtons in tasto matrice Object del JOptionPane con il mnemonico impostato già. I mnemonici lavoro ei pulsanti visualizzati correttamente nelle finestre di dialogo, tuttavia, non agiscono correttamente quando sono attivati. La più evidente è che non dispongono della finestra di dialogo.

Qual è il modo corretto per aggiungere tasti di scelta rapida e mnemonici ai pulsanti di una finestra JOptionPane?

È stato utile?

Soluzione

È possibile creare il JOptionPane, e poi un ciclo tra i componenti del riquadro (bambini, ecc) il controllo per vedere se tutte le componenti sono instanceof JButton, e in tal caso controllare il testo e impostare la corretta mnemonico.

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

Altri suggerimenti

Sfruttate UIManager come segue:

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

Invia i pulsanti come parametri, invece di stringhe

    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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top