2015-02-04 1 views
2

playerhealth라는 JProgressBar가 있습니다. 나는 녹색으로 변하는 바의 색. 이렇게하면 텍스트가 잘 보이지 않으므로 JProgressBar 내부의 텍스트 색상을 검정색으로 설정하려고합니다.JProgressBar TEXT 색상 설정

나는 UIManager를 사용하여 JProgressBars의 전체 색상을 설정할 수 있다고 읽었으나,이 항목과 다른 항목에 대해서만 수행하려고합니다. 그러나 중요하지 않습니다.

또한 HERE은 내 유일한 다른 옵션은 JProgressBar 클래스를 변경하는 것입니다. 나는 이것에 대해 어떻게 갈 것인가?

+0

다른 모양과 느낌은 다른 반응을 의미합니다. 반응을 보지 못하는 경우 StringPainted() .. 및 .setForeground (색상 (선택 사항)) 표시 줄을 설정 한 후 use barname.setOpaque (true); – crAlexander

답변

0

당신은 true로 setStringPainted 속성을 설정할 수 있습니다 :

progressBar.setStringPainted(true); 
progressBar.setForeground(Color.blue); 
progressBar.setString("10%"); 
+0

setStringPainted 속성은 문자열이 다른 색상으로 칠해 지는지 여부가 아니라 진행률 막대에 문자열이 나타날지 여부를 결정합니다. – Whims

4

소스 코드를 보면이 쉽지 않을 것이다.

색상은 BasicProgressBarUI 클래스에 저장된다 : 생성자에서

  • 색상은 정적 방법을 사용 UIManager로부터 검색된다. 정적 방법은 통화를 덮어 쓸 수 없다는 것을 의미합니다.
  • 색상은 비공개 필드로 저장되며 클래스는 보호 된 getter 만 표시하며 setter는 표시하지 않습니다. 세터는 외부에서 호출 할 수 없음을 의미하지 않습니다. JProgressBar 사용된다

ProgressBarUI 인스턴스는 다시 정적 인 방법의 UIManager (UIManager#getUI)로부터 유도된다.

이렇게 많은 옵션이 있습니다.

  • 이것은 당신이 당신의 자신의 UI 인스턴스이이 방법에 대한 보호 게터

주요 단점을 대체 할 수 있습니다

  • 을 만들 수 있습니다 : 내가 생각하는 것은 가능한 일이 JProgressBar#setUI 방법을 사용하는 것입니다 응용 프로그램이 사용할 Look & Feel을 미리 알고 있어야한다는 것입니다. 응용 프로그램이 금속을 사용하는 경우 예를 들어,이 때문에 선행 모양과 느낌을 알 필요의 주요 단점이 솔루션

    JProgressBar progressBar = ... ; 
    ProgressBarUI ui = new MetalProgressBarUI(){ 
        /** 
        * The "selectionForeground" is the color of the text when it is painted 
        * over a filled area of the progress bar. 
        */ 
        @Override 
        protected Color getSelectionForeground() { 
        //return your custom color here 
        } 
        /** 
        * The "selectionBackground" is the color of the text when it is painted 
        * over an unfilled area of the progress bar. 
        */ 
        @Override 
        protected Color getSelectionBackground() 
        //return your custom color here 
        } 
    } 
    progressBar.setUI(ui); 
    

    100 % 행복이 될 것입니다.

  • +0

    모양과 느낌이 무엇인지 모르겠습니다. 만약 내가 실제로 이것을 사용하지 않는다면 아무 것도 바뀌지 않습니까? –

    +0

    당신이 원하든 원하지 않든 LookAndFeel을 사용하고 있습니다. – Robin