2010-01-19 3 views

Répondre

2

Oui, et vous n'avez pas besoin de rendre la boîte modale pour le faire (bien que le rendre modal serait le moyen le plus simple).

Il suffit de faire quelque chose comme le

Dans vos membres delcarations suivantes:

private final MyDialog dialog = new MyDialog(); 

Dans votre code:

private void showDialog() { 
    dialog.setVisible(true); 
    dialog.requestFocus(); // May be needed to bring window to front 
} 

Cela garantira que vous n'instancier la boîte une fois. Appelez simplement showDialog() chaque fois que vous appuyez sur le bouton.

+0

Pete, le code d'exemple fait toujours une meilleure réponse, non? –

0

Vous pouvez définir la modalité JDialog, puis la fenêtre parente ne réagit pas tant qu'elle n'est pas fermée.

Ou vous pouvez initialiser le JDialog avant, et juste le rendre visible lorsque vous appuyez sur votre bouton. Le rendre visible deux fois ne l'affichera pas deux fois.

1

Une autre façon que j'ai faite dans le passé avec Swing est que lorsque le bouton est pressé, la première chose que je fais est de désactiver le bouton. Ensuite, j'utilise le modèle observable pour regarder la fenêtre enfant et réactiver le bouton lorsque la fenêtre enfant est fermée. De cette façon, si l'affichage de la fenêtre enfant prend du temps, l'utilisateur ne peut pas cliquer dessus plusieurs fois et faire des erreurs.

Questions connexes