Подтвердить что ты не робот

Java Look and feel - как сломать зависимость от sun.swing.SwingUtilities2

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

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET;

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

В верхней части плохой импорт от солнечных пакетов прошел проверку правил кодирования.