2010-02-16 2 views
2

스윙에서 JList 비활성화 전경색을 설정하는 속성이 있습니까?Swing에서 JList 비활성화 전경색을 설정하는 속성이 있습니까?

Netbeans GUI 빌더를 사용하고 있으며 JList가 비활성화되었을 때 JList의 텍스트 색상을 다른 기본값으로 설정하는 등록 정보를 자원 등록 정보 파일에 추가하려고합니다. Nimbus LAF를 사용하면 비활성화 할 때 텍스트가 회색으로 표시되고 사용하도록 설정되면 검정색이므로이 색상이 다릅니다. 나는 그것이 비활성화되었을 때 회색이되기를 원하지 않는다.

표준 전경색은 단지 .foreground입니다.

감사합니다.

답변

3

DefaultListCellRendererJLabel입니다. 그 getListRendererComponent 방법에있어서,이 전달되는 것을 JList의 기반으로 사용 가능 상태를 설정합니다.

코드를 BasicLabelUI에 사용할 수 JLabel 텍스트를 그림에 대한 것은 그림자 효과로 텍스트를 칠하는 몇 가지 작업을 수행합니다. 많은 하위 클래스에서 "Label.disabledForeground" UI 속성을 찾는 코드를 찾을 수 있습니다. The Nimbus defaults"Label.disabledText"을 찾은 것 같습니다.

  1. 당신은 모든 JLabel 인스턴스 이 색상에 걸릴 사용할 수있는 서브 클래스를 할 것이다는 UIManager"Label.disabledText" 속성을 설정할 수 있습니다 :

    당신은 몇 가지 옵션이 있습니다.

  2. 의 활성화 된 상태를 테스트 한 다음 사용자 지정 코드를 사용하는 사용자 지정 렌더러를 만들거나 활성화 된 상태에 관계없이 동일한 모양으로 보이게하려면 사용 상태 테스트를 완전히 생략 할 수 있습니다 상태.

내가 그 클래스는 다양한 구성 요소에 builing 블록으로 사용되는 같은 JLabel 속성의 변화가 표시됩니다 위치를 말할 어려운대로, 사용자 정의 렌더러 접근 방식을 제안했다.

+0

팁 주셔서 감사합니다. 렌더러를 잊어 버렸습니다. getListRendererComponent를 오버라이드 (override)하고, 슈퍼 getListRendererComponent를 호출 해, 돌아 오기 전에 setEnabled (true)를 호출 해 DefaultListCellRenderer를 확장했습니다. 그게 내가 진정으로 원했던 것입니다. –

1

설정할 속성이있는 경우 UIManager Defaults 프로그램에서 속성을 변경해야합니다. Metal 또는 Windows LAF에 대한 속성이 표시되지 않으므로 UI ​​코드에서 직접 제어된다는 것을 나타낼 수 있습니다.

관련 문제