Maison >Java >javaDidacticiel >Comment puis-je utiliser une minuterie pour afficher un JDialog modal à partir d'un autre JFrame sans utiliser de boutons ?
Appel d'un JFrame à partir d'un autre à l'aide d'une minuterie sans boutons
Au lieu d'utiliser des boutons pour déclencher l'affichage d'un JFrame imbriqué, envisagez d'utiliser un JFrame non modal dialogue. Cette technique offre une approche plus propre et plus efficace.
Mise en œuvre :
1. Boîte de dialogue non modale :
2. Minuterie pour le compte à rebours :
3. PropertyChangeListener :
4. Afficher la boîte de dialogue :
Cas d'utilisation :
L'extrait de code suivant illustre cette technique :
<code class="java">import javax.swing.*; public class TimedDialogExample { // Countdown time in seconds private static final int TIME_OUT = 10; public static void main(String[] args) { SwingUtilities.invokeLater(() -> { // Create a frame JFrame frame = new JFrame("Main Frame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); // Create a dialog JDialog dialog = new JDialog(frame); dialog.setSize(300, 200); // Create a timer to display the dialog after TIME_OUT seconds Timer timer = new Timer(1000, e -> { // Hide the dialog dialog.setVisible(false); // Dispatch a WINDOW_CLOSING event to close the dialog dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)); }); timer.start(); // Set the dialog's content JPanel panel = new JPanel(); panel.add(new JLabel("This is the dialog")); dialog.add(panel); // Make the frame visible frame.setVisible(true); // Display the dialog after TIME_OUT seconds timer.stop(); dialog.setVisible(true); }); } }</code>
En employant cette technique, vous pouvez ouvrir automatiquement un JDialog imbriqué sans avoir besoin de boutons supplémentaires. Cette approche offre une expérience utilisateur simplifiée et intuitive, en particulier lorsque le timing de l'affichage est crucial.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!