progressBar
을 클래스가 생성하는 값으로 업데이트하려고 시도하고 SwingWorker
으로 보냅니다. GUI에 SwingWorker를 사용하여 gui를 업데이트하십시오.
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("progress")) {
int progress = (Integer) evt.getNewValue();
jProgressBar1.setValue(progress);
}
}
을하고 난이도하고 있어요 : 나는에서 변수의 값을 업데이트하는 방법 "setProgress"
이있는 SwingWorker
에서
private void startWorker(){
worker = WorkerUpdater.getInstance();
worker.addPropertyChangeListener(this);
worker.execute();
}
을 그것을 계산하는 객체와 그 다음에 나는 SwinWorker
이이 값을 읽고 progressBar
을 다시 칠하고 싶습니다.
doInBackground()
방법으로 어떻게 할 수 있습니까? 다음 방법이 있지만 SwingWorker
속성 "진행률"값이 변경 될 때마다 progressBar
을 업데이트하려고합니다.
그런 식으로 작동하지만 다른 클래스가 SwingWorker의 특성에서 "진행률"을 수정할 때만 progressBar를 업데이트하려고합니다. 내가 어떻게 해?
@Override
public Void doInBackground() throws Exception {
while(this.progress<100){
setProgress(this.progress+10);
this.progress += 10;
}
return null;
}
하지만 doProgress를 doInBackground() 메소드에서 호출해야합니까? 다른 클래스에서 setProgress를 호출 할 수 있습니까? 마찬가지로 : Worker.getInstance(). setProgress (x) – mreigosa
@mreigosa 문제는'setProgress'가 SwingWorker에서'protected'와'final'으로되어'Worker' 클래스 밖에서 접근 할 수 없다는 것입니다. 바깥에서 호출 할 수 있기를 원한다면 다른 메소드'public void progress (int p) {setProgress (p); } '또는'외부인 '이 전화를 걸어도 비슷합니다. –
진전 바의 가치는 변하지 않았다고 말 했어요. 무슨 일이야? SwingWorker에 보내는 값이 정확하기 때문에 이해할 수 없습니다. 배경 방법으로 SwingWorker를 어떻게해야합니까? – mreigosa