Menggunakan SwingWorker dalam Java
Pengenalan
Tugas jangka panjang yang dilaksanakan pada Penghantaran Acara Benang boleh membekukan GUI. Isu ini boleh diatasi dengan menggunakan SwingWorker, yang menyokong pelaksanaan tugas sedemikian pada urutan yang berasingan.
Cara Menggunakan SwingWorker
Contoh
Dalam contoh ini, SwingWorker digunakan untuk melakukan tugas yang memakan masa dan paparkan kotak mesej dengan hasilnya satu saat kemudian:
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class SwingWorkerExample { private static void makeGUI() { final JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().setLayout(new FlowLayout()); class AnswerWorker extends SwingWorker<Integer, Integer> { protected Integer doInBackground() throws Exception { Thread.sleep(1000); return 42; } protected void done() { JOptionPane.showMessageDialog(f, get()); } } JButton b = new JButton("Answer!"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new AnswerWorker().execute(); } }); f.getContentPane().add(b); f.getContentPane().add(new JButton("Nothing")); f.pack(); f.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(SwingWorkerExample::makeGUI); } }
Atas ialah kandungan terperinci Bagaimanakah SwingWorker Boleh Mencegah GUI Membeku di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!