일부 실행 로그를 표시 할 텍스트 영역 스윙 요소가 있습니다. 메시지는 각 실행 단계 후에 나타나야합니다. 예 : '가져 오기가 시작되었습니다.' 그러나 문제는, 모든 로그 메시지는 한 번만 버튼 동작 수행 이벤트가 completed.Below 후 나는 텍스트단추 작업 수행 이벤트로 텍스트 영역이 업데이트되지 않음
당신이 GUI 스레드에서 모든ActionPerformed
물건을 할 때문이다
getXmlButton = new JButton("Fetch Reports");
getXmlButton.addActionListener((new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
createDirectory();
stutusArea.append("Fetching has been started");
final String password = passwordTextField.getText();
final String username = loginTextField.getText();
OperatingSystemDriver os = new OperatingSystemDriver();
driver = os.getDriver();
stutusArea.append("getting some url");
driver.get(URL);
try {
LoginPage login = new LoginPage(driver);
login.loginAs(username, password);
stutusArea.append("successful login");
} catch (Exception e1) {
stutusArea.append("login error");
}
insertToDbButton.setEnabled(true);
}
}));
EDT (Event Dispatch Thread)를 차단하지 마십시오. GUI는 'Freeze'할 것입니다. 대신 오랫동안 실행되는 작업을 위해'SwingWorker'를 구현하십시오. 자세한 내용은 [동시성의 동시성] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)을 참조하십시오. –