Maison >Java >javaDidacticiel >Comment puis-je utiliser une minuterie pour afficher un JDialog modal à partir d'un autre JFrame sans utiliser de boutons ?

Comment puis-je utiliser une minuterie pour afficher un JDialog modal à partir d'un autre JFrame sans utiliser de boutons ?

DDD
DDDoriginal
2024-10-26 10:59:29340parcourir

How can I use a timer to display a modaless JDialog from another JFrame without using buttons?

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 :

  • Créez un JDialog non modal, qui est un conteneur de niveau supérieur qui permet une interaction avec le cadre sous-jacent.

2. Minuterie pour le compte à rebours :

  • Utilisez un javax.swing.Timer pour lancer un compte à rebours qui ouvrira automatiquement le JDialog à un intervalle de temps spécifique.

3. PropertyChangeListener :

  • Enregistrez un PropertyChangeListener pour le JDialog afin de surveiller les modifications apportées à sa propriété de valeur.

4. Afficher la boîte de dialogue :

  • Lorsqu'un événement de changement de propriété est déclenché, masquez le JDialog et envoyez un événement WINDOW_CLOSING pour le fermer.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn