SwingWorker: Panduan Komprehensif untuk Tugas Asynchronous
Dalam Java Swing, menjalankan tugas yang berjalan lama pada Event Dispatch Thread (EDT) boleh membekukan GUI. Untuk menangani perkara ini, SwingWorker menawarkan penyelesaian yang berkuasa untuk melaksanakan operasi yang memakan masa dalam urutan berasingan tanpa menyekat GUI.
Memahami SwingWorker
SwingWorker ialah kelas abstrak yang direka bentuk khusus untuk aplikasi Swing. Ia membolehkan pembangun melaksanakan tugasan secara tidak segerak dalam urutan latar belakang dan mendapatkan semula keputusan pada EDT apabila tugasan selesai.
Melaksanakan SwingWorker dalam Kod Anda
Mengenai anda sebelumnya soalan tentang mengecat semula dari kelas lain, SwingWorker boleh digunakan sebagai berikut:
Contoh Pelaksanaan
Berikut ialah contoh yang menunjukkan cara untuk gunakan SwingWorker untuk mengira jujukan Fibonacci dan paparkan hasilnya dalam kotak mesej selepas a kedua:
class FibonacciWorker extends SwingWorker<Integer, Integer> { @Override protected Integer doInBackground() throws Exception { return fibonacci(n); // Calculate the Fibonacci sequence for n } @Override protected void done() { try { JOptionPane.showMessageDialog(null, get()); } catch (Exception e) { e.printStackTrace(); } } private int fibonacci(int n) { return (n <= 1) ? n : fibonacci(n - 1) + fibonacci(n - 2); } } public static void main(String[] args) { new FibonacciWorker().execute(); // Execute the SwingWorker }
Sumber Lain
Atas ialah kandungan terperinci Bagaimanakah SwingWorker Boleh Menghalang GUI Membeku dalam Aplikasi Java Swing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!