Utilisation de SwingWorker en Java
Introduction
Tâches de longue durée exécutées lors de la répartition d'événements Thread peut geler l’interface graphique. Ce problème peut être résolu en utilisant SwingWorker, qui prend en charge l'exécution de telles tâches sur un thread séparé.
Comment utiliser SwingWorker
Exemple
Dans cet exemple, un SwingWorker est utilisé pour effectuer une tâche fastidieuse et afficher une boîte de message avec le résultat une seconde plus tard :
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); } }
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!