Java에서 SwingWorker 사용
소개
이벤트 디스패치에서 실행되는 장기 실행 작업 스레드는 GUI를 정지시킬 수 있습니다. 이 문제는 별도의 스레드에서 이러한 작업의 실행을 지원하는 SwingWorker를 사용하여 해결할 수 있습니다.
SwingWorker 사용 방법
예
이 예에서는 SwingWorker를 사용하여 수행합니다. 시간이 많이 걸리는 작업을 수행하고 1초 후에 결과가 포함된 메시지 상자를 표시합니다.
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); } }
위 내용은 SwingWorker는 Java에서 GUI 정지를 어떻게 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!