2011-10-07 3 views
1

JColorChooser를 사용하는 문제를 디버깅하려고합니다. 로컬 설정하려고하지만 UIManager, Locale.setDefault 또는 JColorChooser.setLocale 무엇을 설정했는지에 관계없이 System의 Locale로 되돌아갑니다.JColorChooser 및 지역화

JColorChooser를 설정하는 로캘이 시스템 로캘과 다릅니다. 나머지 애플릿은 요청 된 UI를 사용하고 있습니다.

JColorChooser colors = new JColorChooser(); 
colors.setLocale([spanish]); 
Locale.setLocale([spanish]); 
UIManager.getDefaults().setDefaultLocale([spanish]); 

그러나, 이러한 옵션 중 어느 것도 구성 요소를 변경하지 :

나는 다음과 같은 시도했습니다.

+0

에 의해 calized 텍스트 정확히 당신이 원하는 수행 다른 (이상 시스템) 로케일 또는 모든 UI 만 색상 선택기? – kleopatra

+0

내 모든 기존 UI가 설정된 사용자 정의 UI를 존중합니다. 색상 선택기는 UI를 시스템의 로켈에 유지합니다. [영어]. 색상 선택기에는 번역되지 않은 비트가 있습니다. 예를 들어 견본 텍스트 및 탭. – monksy

답변

1

EDIT

I는 아래 :-) (앞에서 언급 한 바와 같이, JColorChooser에 (그리고 대부분 지역화 조립식 요소) 로케일 지원 차선 (일명이다 버그). 로켈 속성을 직접 설정하는 것은 간단히 작동하지 않습니다. 응용 프로그램 별 설정 WORKSFORME하지만, (내 시스템 기본이 독일어) :

Locale.setDefault(new Locale("es")); 

때문에 초기 응용 프로그램 코드에서 수행, 최고는 구성 요소 를 작성하기 전에, 예상되는 비 시스템을 얻을 수있는 가장 좋은 기회를 제공합니다 현지화 된 텍스트.

원래 대답은 (조금으로 담보 한) 스윙에서

현지화 지원을 약간 넣어, 마음이 내키지입니다.

문제의 일부는 AWT와 Swing 간의 로케일 해결 메커니즘 사이의 임피던스 불일치입니다. 전자는 상위 체인을 분석하여 대부분의 자식이 null 로캘 속성을 가질 것으로 예상하고 후자는 기본값을 반환하도록 명시합니다. JComponent.getDefaultLocale()의 초기 (JComponent 생성자 내). 문제의 다른 부분은 setLocale이 적절하게 변경 이벤트를 발생 시킨다는 것입니다.하지만 아무도 수신하지 않습니다. 그것은 f.i와 같은 미리 제작 된 컨테이너에 대한 극적인 결과를 낳습니다. JColorChooser : ui 대리자는 모든 자식의 로캘 속성을 업데이트해야하지만 단순히 아무것도 수행하지 않습니다. (간과하기 쉽습니다. datePicker와 같은 SwingX 구성 요소에는 문제가 없었습니다. 지금 바뀌 었습니다 .-)

더 나쁜 것은 무엇이 있습니까? Ui는 JComponent에 설정된 기본값을 존중하지 않습니다.

그래서 모든 로케일을 완전히 존중하게하는 유일한 방법은 로케일에 기본 로케일을 설정 한 다음 나중에 복원하는 것입니다 (내가 선택한 로케일에서 색상 선택기 만 사용하려는 경우

Locale old = Locale.getDefault(); 
    Locale.setDefault(new Locale("es")); 
    JColorChooser chooser = new JColorChooser(Color.RED); 
    Locale.setDefault(old); 

아 .. UI를 설치 모든 패널 (DefaultXXChooserPanel는) ​​그들이 보라 얻을 수 있다는 점에서 버그가 당신이 :-) 원하는 것을 생각

// wrong: 
    UIManager.getString(somekey) 

대신

// correct 
    UIManager.getString(somekey, appropriateLocale) 
+0

이 픽스는 기본적으로 UIManager의 룩앤필을 재설정하는 것입니다. 당신의 대답은 나에게 조금 더 가까워졌습니다, 그래서 저는 그것을 신용으로 줄 것입니다. 하나는 버전 1.6으로 수정되었을 것이라고 생각했을 것입니다. 실제로이 두 가지 버그가 있습니다. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4423439 http://bugs.sun.com/view_bug.do?bug_id= 4884480 – monksy