Composante réglage de focus dans JOptionPane.showOptionDialog()

Afin d'avoir personnalisé les légendes de bouton dans une boîte de dialogue de saisie, j'ai créé le code suivant:

String key = null;
JTextField txtKey = new JTextField();        
int answerKey = JOptionPane.showOptionDialog(this, new Object[] {pleaseEnterTheKey, txtKey}, decryptionKey, JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[] {okCaption, cancelCaption}, okCaption);        
if (answerKey == JOptionPane.OK_OPTION && txtKey.getText() != null) {
  key = txtKey.getText();
}

Comment puis-je déplacer le focus (curseur) pour le champ de texte de la boîte de dialogue est affichée?

Mise à JOUR

Cela ne fonctionne pas pour moi, je veux dire le textfield a pas d'accent:
OS: Fedora Gnome

public class Test {
  public static void main(String[] args) {
    String key = null;
    JTextField txtKey = new JTextField();
    txtKey.addAncestorListener(new RequestFocusListener());
    int answerKey = JOptionPane.showOptionDialog(null, new Object[]{"Please enter the key:", txtKey}, "Title", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{"OKKK", "CANCELLLL"}, "OKKK");
    if (answerKey == JOptionPane.OK_OPTION && txtKey.getText() != null) {
      key = txtKey.getText();
    }
  }
}
et quelle est la question?
Comment puis-je déplacer le curseur vers le champ de texte?
essayez txtKey.requestFocusInWindow(); - download.oracle.com/javase/6/docs/api/java/awt/...
Cela ne semble pas fonctionner dans mes tests simples. Je suis sûr que j'ai vu le "on-line" réponse à cela, mais pour la vie de moi je ne me souviens pas d'elle.
Il ne fonctionne pas! 🙁

OriginalL'auteur ehsun7b | 2011-06-06