1
SwingWorker 스레드가 실행되는 동안 내 GUI의 여러 버튼/메뉴 항목을 비활성화하려고합니다. 버튼을 클릭하면 스레드가 시작됩니다.SwingWorker의 내부 또는 외부에서 버튼을 업데이트 하시겠습니까?
내 코드의 while 루프가 CPU로드를 크게 증가시키는 것처럼 보입니다. SwingWorker 스레드가 여전히 실행 중인지 확인하는 방법에 대해 잘못된 것이 있습니까?
SwingWorker 스레드 내의 버튼/메뉴 항목을 업데이트 할 때 CPU로드가 확실히 낮습니다. 그러나 SwingWorker 스레드의 작업이 아니어야한다고 생각했습니다. 그럴까요?
JButton button = new JButton("Start");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
menu.setEnabled(false);
MySwingWorker worker = new MySwingWorker();
worker.execute();
while (true) {
if (worker.isCancelled() || worker.isDone()) {
menu.setEnabled(true);
break;
}
}
}
});
t.start();
}
});
나는 그것을 지적 해 주셔서 감사합니다. –
당신은 오신 것을 환영합니다. – trashgod
또 하나의 질문 : 버튼의 ActionListener ("축하합니다, 버튼을 클릭했습니다")에서 JOptionPane을 동적으로 만들 수 있습니까? 그 일을 위해 일하는 사람은 그 목적을 위해 약간 큰 것처럼 보입니다. –