2010-06-18 2 views
1

JProgressBar을 사용하여 그래픽 막대뿐만 아니라 현재 값을 인쇄하고 싶습니다.스윙 : JProgressBar에 라벨을 겹쳐서 만드시겠습니까?

progress bar

나는이 작업을 수행하는 가장 좋은 방법 같은데요 재정의 paintComponent에 있습니다 :

@Override protected void paintComponent(Graphics g) { 
// Let component paint first 
    super.paintComponent(g); 
// paint my contents next.... 
} 

하지만 난 잘 모르겠습니다 ... 조언?

답변

7

난 당신이 자신의 API를 사용하는 것이 좋습니다 것입니다 :

public void setStringPainted(boolean b) 

진행 표시 줄이 진행 문자열을 렌더링할지 여부를 결정하는 stringPainted 프로퍼티의 값을 설정합니다. 기본값은 false입니다. 즉, 문자열이 그려지지 않습니다. 일부 룩앤필은 진행률 문자열을 지원하지 않거나 진행률 막대가 특정 모드에있을 때만 진행률 문자열을 지원할 수 있습니다.

public void setString(String s) 

가 진행 문자열의 값을 설정합니다. 기본적으로이 문자열은 null이며 간단한 백분율 문자열을 사용하는 기본 제공 비헤이비어를 의미합니다. 사용자 정의 진행률 문자열을 제공하고 기본 제공 비헤이비어로 되돌리려면 문자열을 다시 null로 설정하십시오. 진행 문자열은 isStringPainted 메서드가 true를 반환하는 경우에만 그려집니다.

참고는 항상입니다. :)

실행 중에 값을 편집하려면 진행률 표시 줄에 ChangeListener을 첨부해야합니다. 잭의 답변에 따라

+0

DOH! 나는 그 생각을해야만했다. 감사! –

1

근무 솔루션 :

final JProgressBar pbar = ... 
pbar.setStringPainted(true); 
final NumberFormat nf = NumberFormat.getInstance(); 
nf.setGroupingUsed(true); 
pbar.setString(nf.format(pbar.getValue()));    
pbar.addChangeListener(new ChangeListener() 
{ 
    @Override public void stateChanged(ChangeEvent event) { 
     pbar.setString(nf.format(pbar.getValue()));    
    }   
}); 
관련 문제