Java外观 - 如何打破对sun.swing.SwingUtilities2的依赖

Pet*_*tec 18 java swing look-and-feel

我正在维护一些代码,实现Java中的自定义外观.在最近升级Java版本时(出于其他原因)我发现由于找不到字段而导致外观破损

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET;
Run Code Online (Sandbox Code Playgroud)

这是一个紧密基于BasicMenuItemUI.layoutMenuItem()Java 6u02(这里是源代码)的类.我发现Oracle已经重新考虑了他们的代码,以便MenuItemLayoutHelper在我使用的新目标版本中包含一个Java 6u31.

我可以使用MenuItemLayoutHelper但是这并没有解决问题它只是把它关闭,直到下一次更改Java内部.因此,我已将此作为一种解决方案.

我正在建议如何实现从左到右的布局,类似于BasicMenuItemUI不需要知道父母的最大文本偏移量(删除对sun.swing.SwingUtilities的不良依赖).

Cou*_*n22 4

正如阿尔布凡所说,你不能。您要么必须依赖于代码,复制类并在程序中使用它,要么根本不使用它并使用第三方库,要么不使用该功能。