2012-08-20 1 views
18

Java에서 사용자 정의 된 Look & Feel을 구현하는 일부 코드는 유지 관리 중입니다. (다른 이유로) Java 버전의 최근 업그레이드를하는 동안 나는 모양과 느낌 때문에Java Look and Feel - sun.swing.SwingUtilities2에 대한 의존성을 깨는 방법

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET; 

이 밀접하게 자바 6u02 (년경 BasicMenuItemUI.layoutMenuItem()을 기반으로하는 클래스에에없는 필드에 파산 발견 here's the source). 나는 오라클이 자신의 코드를 다시 사용하여 MenuItemLayoutHelper을 새로운 대상 버전 인 Java 6u31에 포함 시켰습니다.

단지 MenuItemLayoutHelper을 사용할 수는 있지만 다음 번에 Java 내부가 바뀔 때까지 문제가 해결되지 않습니다. 따라서이 문제를 해결책으로 생각했습니다.

BasicMenuItemUI과 비슷한 왼쪽에서 오른쪽으로 레이아웃을 얻는 방법에 대한 조언을 듣고 부모의 최대 텍스트 오프셋 (sun.swing.SwingUtilities에 대한 나쁜 종속성 제거)을 알 필요가 없습니다.

+17

아마도 의존성을 도입 한 사람을 붙잡을 수있는 옵션이 아니라 모든 것이 고정 될 때까지 그녀를 방 안으로 가둬 두십시오 :-) 하루가 끝날 무렵에는 할 일이 많지 않습니다 ... 제외 ... 기침 .. c & p, ehh, 나는 태양 코드를보고 리팩토링 된 버전을 구현한다는 것을 의미한다. – kleopatra

+9

@kleopatra 나의 엄마는 나를 경고했다 ** ** "태양을 보지 않는다". 그녀는 비록 "코드"를 언급하지 않았다. –

+0

아야 ... 이것은 빌드 타임 코드 표준 집행을위한 포스터 자식이다. – Gus

답변

4

albfan이 말했듯이, 당신은 할 수 없습니다. 코드에 의존하거나 클래스를 복사하여 프로그램에서 사용하거나 전혀 사용하지 않고 타사 라이브러리를 사용하거나 해당 기능을 사용하지 않아야합니다.

2

오케이되었을 수도 있지만 문제가되는 코드에서 일관되게 사용 되었다면 sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET 대신 내 자신의 상수를 사용할 수 있습니다. 결코 이상적인 솔루션이 아닙니다.

태양 패키지의 잘못된 부분이 코딩 규칙 검사를 거쳤습니다.