J'ai un JDialog code> qui prend un nom de l'utilisateur. Derrière le
JDialog code>, est une applet. Je ne veux pas que l'utilisateur accède à cet applet jusqu'à ce qu'il soit entré le nom. J'ai essayé
jdualog.setalwaysontop (true) code>, mais l'applet jette une erreur
AccessException code>. Donc, ce que j'ai fait était de garder une boucle tandis que vous allez exécuter
jDialog.setVisible (true) code> jusqu'à ce que le
jtextfield code> (entrée pour le nom d'utilisateur) est vide (""). Mais pour une raison quelconque, cela fonctionne vraiment, ce qui signifie que les charges
jdialog code>, mais il faut du temps pour se concentrer sur le
jtextfield code> et même lorsque l'utilisateur tape son nom, il vient vraiment lent. ... Comme un personnage en 2 secondes ... Y a-t-il une autre façon pour moi de forcer l'utilisateur à entrer le nom avant d'accéder à l'applet? P>
3 Réponses :
Il fonctionne lentement car le programme traite que foo boucle p>
Ce que vous pouvez faire est d'ajouter un auditeur de fenêtre, puis de la perte de JDialog a été axée sur la mise au point (ou l'applet gagne-la) renvoie la mise au point sur JDialog. p>
Cela devrait fonctionner beaucoup mieux que la boucle que vous utilisez maintenant p>
Si les modalités changent pour des applets, je suggérerais cela à la place. Je n'ai pas le temps de découvrir, cependant.
J'ai ajouté un focuslistener à JDialog et a écrit le corps pour la fonction Focuslost (). Cependant, cela ne semble pas fonctionner. Si l'utilisateur clique sur le cheydalog, elle ne s'affiche pas. Je pense que cliquer à l'extérieur du JDialog ne cadra pas la mise au point de JDialog, il est juste caché.
Utilisez un JDialog modal. Par exemple, le code dans votre méthode init (...) de JapPlet peut inclure:
JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this)); dialog.setModal(true); dialog.setSize(...); dialog.setVisible( true );
Exactement ce que je cherchais. Merci.
Mais il y a un problème. ActionListeners ne répond plus. Et aussi, l'utilisateur peut fermer la boîte de dialogue (il y a un X en haut à droite de la boîte de dialogue). Y a-t-il quelque chose que je dois restaurer après que l'utilisateur ait entré le nom?
Si vous ne voulez pas que l'utilisateur puisse fermer la boîte de dialogue, utilisez: dialog.setDefaultCloseopération (...);
Une autre option serait la suivante: Cela force la boîte de dialogue sur tout autre. p> p>