Rumah >Java >javaTutorial >Mengapakah UI Swing saya membeku apabila menggunakan `Thread.sleep()` dengan `JFileChooser`?

Mengapakah UI Swing saya membeku apabila menggunakan `Thread.sleep()` dengan `JFileChooser`?

DDD
DDDasal
2024-11-03 05:43:02593semak imbas

Why does my Swing UI freeze when using `Thread.sleep()` with `JFileChooser`?

Swing UI Berhenti dengan Thread.sleep()

Pertanyaan anda mencadangkan bahawa menggunakan Thread.sleep() bersama-sama dengan JFileChooser membawa kepada Penggantungan UI, menghalang paparan unsur Swing. Sebab di sebalik tingkah laku ini terletak pada fakta bahawa Thread.sleep() digunakan pada Event Dispatch Thread (EDT), yang bertanggungjawab untuk mengurus GUI. Akibatnya, UI memasuki keadaan tidur, menjadikannya tidak bertindak balas.

Untuk menangani isu ini, adalah disyorkan untuk menggunakan javax.swing.Timer sebagai gantinya. Begini cara ia berfungsi:

Timer t = new Timer(1000 * 5, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // Perform your recurring task
    }
});

Dengan menggunakan Pemasa, tugas berkala anda dilaksanakan di luar EDT, memastikan UI kekal responsif semasa tugas anda berjalan selari.

Atas ialah kandungan terperinci Mengapakah UI Swing saya membeku apabila menggunakan `Thread.sleep()` dengan `JFileChooser`?. 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