Rumah  >  Artikel  >  Java  >  Bagaimanakah saya boleh menggunakan pemasa untuk memaparkan JDialog modales dari JFrame lain tanpa menggunakan butang?

Bagaimanakah saya boleh menggunakan pemasa untuk memaparkan JDialog modales dari JFrame lain tanpa menggunakan butang?

DDD
DDDasal
2024-10-26 10:59:29254semak imbas

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

Memanggil Satu JFrame dari Yang Lain Menggunakan Pemasa Tanpa Butang

Daripada menggunakan butang untuk mencetuskan paparan JFrame bersarang, pertimbangkan untuk menggunakan model tanpa model dialog. Teknik ini menawarkan pendekatan yang lebih bersih dan cekap.

Pelaksanaan:

1. Dialog Tanpa Model:

  • Buat JDialog tanpa mod, iaitu bekas peringkat atas yang membenarkan interaksi dengan bingkai asas.

2. Pemasa untuk Kira detik:

  • Gunakan javax.swing.Pemasa untuk memulakan kira detik yang akan membuka JDialog secara automatik pada selang masa tertentu.

3. PropertyChangeListener:

  • Daftar PropertyChangeListener untuk JDialog untuk memantau perubahan dalam harta nilainya.

4. Dialog Paparan:

  • Apabila peristiwa penukaran harta dicetuskan, sembunyikan JDialog dan hantar acara WINDOW_CLOSING untuk menutupnya.

Kes Penggunaan:

Coretan kod berikut menunjukkan teknik ini:

<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>

Dengan menggunakan teknik ini, anda boleh membuka JDialog bersarang secara automatik tanpa memerlukan butang tambahan. Pendekatan ini menyediakan pengalaman pengguna yang diperkemas dan intuitif, terutamanya apabila pemasaan paparan adalah penting.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan pemasa untuk memaparkan JDialog modales dari JFrame lain tanpa menggunakan butang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn