글쓴이 :안광호 1999년 3월 23일 12:10:18
In Reply to: [질문] paint() 와 IO의 thread 자원 사용 문제... - Progressbar posted by 박성호 on 1999년 3월 23일 09:50:19:
질문하신 내용에서 빗나간 감이 없지않지만 애초에 원하는 것이 Progress Bar의 기능이라면 다음의 Source가 도움이 될런지.
복잡한 내용은 다 제거하고 Progress Bar는 자기자신이 진척율을 알 수도 없고 변경시킬 수도 없고, 다만 외부의 사용자가 진척율이라든지 갱신 시점 등을 알고 있다는 원칙에 충실하여 단순하게 작성했습니다.
사용 방법은 Source를 보시면 아시겠지만 setProgressValue(), getProgressValue() 두 method를 사용하여 진척율 및 갱신 시점을 결정하게 했습니다.
// ProgressPane.java
import java.awt.*;
public class ProgressPane extends Canvas
{
int progressValue = 0; // percentage value(%)
public ProgressPane(){
super();
}
public void paint(Graphics g){
// draw box
g.setColor(Color.red);
g.drawRect(0, 0, getSize().width-1, getSize().height-1);
// draw progress bar
g.setColor(Color.blue);
g.fillRect(0, 0, (int)(getSize().width * progressValue / 100), getSize().height);
}
public void setProgressValue(int value){
if(value > 100 || value < 0) return;
progressValue = value;
repaint();
}
public int getProgressValue(){
return progressValue;
}
}