스윙 백그라운드 작업 처리
1. 스윙의 백그라운드 장시간 작업 정보
Swing UI에서 백그라운드 작업이 너무 오래 걸리면 GUI 인터페이스가 일시적으로 응답하지 못할 수 있습니다.이러한 문제를 해결하기 위해 스윙워커 클래스를 인용하여 백엔드 소모 작업을 완성합니다.
프로그램 프레임워크는 다음과 같습니다.
SwingWorker worker = new SwingWorker<YourReturnType, YourInterType>() {
@Override
protected YourReturnType doInBackground() throws Exception {
//
...
// , ,
while(...){
...
publish(new YourInterType());// Process
}
return ...;
}
@Override
public void Process(List<YourInterType){
// ,
...
}
@Override
public void done() {
try {
YourReturnType y = get();
...// , GUI
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
worker.execute();
예:
SwingWorker worker = new SwingWorker<Boolean, Void>() {
@Override
protected Boolean doInBackground() throws Exception {
Database db = new Database(eName.getText(), cName.getText());
return new CreateImpl(db).createDatabase();
}
@Override
public void done() {
try {
String mess = " !";
b = get();
if (b) {
doClose(RET_OK);
mess = " , !";
}
com.mess.setText(mess);
frame.setDone();
frame.dispose();
com.setVisible(true);
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
worker.execute();
SwingWorker는 백그라운드에서 많은 시간을 소모합니다.사용자가 주로 사용하는 방법은 두 가지인데 하나는 DoInBakcground이고 하나는 Done이다.이 중 DoInBackground는 작업이 끝난 후의 응답을 처리하는 데 시간이 걸립니다.
SwingWorker의 첫 번째 파라미터는 DoInBackground가 되돌아오는 유형을 지정하고, 두 번째 파라미터는 중간 처리 결과의 유형을 지정합니다.여기서는 중간 결과를 처리할 필요가 없기 때문에 두 번째 파라미터를 Void로 지정합니다.
그 중에서 워커가done에서 사용자 데이터에 접근할 수 있도록 사용자 데이터를 주 클래스의 구성원 변수로 명시해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Application Development in WebOSDevelop applications in WebOS Recognize the abstract class Application The operating system accepts classes that impleme...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.