Heim >Java >javaLernprogramm >Wie kann SwingWorker das Einfrieren der GUI in Java verhindern?
SwingWorker in Java verwenden
Einführung
Auf dem Event Dispatch ausgeführte Aufgaben mit langer Laufzeit Thread kann die GUI einfrieren. Dieses Problem kann durch die Verwendung von SwingWorker behoben werden, der die Ausführung solcher Aufgaben in einem separaten Thread unterstützt.
So verwenden Sie SwingWorker
Beispiel
In diesem Beispiel wird ein SwingWorker zur Ausführung verwendet eine zeitaufwändige Aufgabe und zeigt eine Sekunde später ein Meldungsfeld mit dem Ergebnis an:
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); } }
Das obige ist der detaillierte Inhalt vonWie kann SwingWorker das Einfrieren der GUI in Java verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!