Внешний вид Java — как избавиться от зависимости от sun.swing.SwingUtilities2

Я поддерживаю некоторый код, который реализует индивидуальный внешний вид в Java. Выполняя недавнее обновление версии Java (по другим причинам), я обнаружил, что внешний вид сломался из-за поля, не найденного в

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET;

Это класс, тесно связанный с BasicMenuItemUI.layoutMenuItem() примерно Java 6u02 (вот источник). Я обнаружил, что Oracle переработала свой код, чтобы включить MenuItemLayoutHelper в новую целевую версию, которую я использую, Java 6u31.

Я мог бы просто использовать MenuItemLayoutHelper, но это не решает проблему, а просто откладывает ее до следующего раза, когда внутренности Java будут изменены. Поэтому я отбросил это как решение.

Мне нужен совет о том, как добиться макета слева направо, аналогичного BasicMenuItemUI, без необходимости знать максимальное смещение текста родителей (удаление плохой зависимости от sun.swing.SwingUtilities).


person Petec    schedule 20.08.2012    source источник
comment
вероятно, это не вариант схватить человека, который ввел эту зависимость, запереть ее в комнате, пока все не будет исправлено :-) В конце концов, делать особо нечего ... кроме ... кашля .. c&p Эээ, я имею в виду посмотреть на исходный код и реализовать рефакторинговую версию.   -  person kleopatra    schedule 20.08.2012
comment
@kleopatra Моя мама предупреждала меня не смотреть на солнце. (задумчиво) Но она не упомянула о коде..   -  person Andrew Thompson    schedule 21.08.2012
comment
Ой ... это детище плаката для обеспечения соблюдения стандартов кода времени сборки.   -  person Gus    schedule 28.08.2012
comment
Итак, в основном вы хотите использовать код Java без зависимостей кода Java. Краткий ответ: Вы не можете. Ожидается, что новая версия java будет иметь новый код и рефакторинг. Вы должны передумать   -  person albfan    schedule 28.08.2012


Ответы (2)


Как сказал Альбфан, нельзя. Вы либо должны зависеть от кода, скопировать класс и использовать его в своей программе, либо вообще не использовать его и использовать стороннюю библиотеку, либо не использовать эту функцию.

person Coupon22    schedule 11.09.2012

Хорошо, может быть, это было какое-то время, но я понял, что могу просто использовать свою собственную константу вместо sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET, если она последовательно используется в нарушающем коде. Ни в коем случае не идеальное решение.

С другой стороны, неправильный импорт из пакетов Sun пошел на проверку правил кодирования.

person Petec    schedule 27.11.2012