18

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

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET;

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

我可以只使用,MenuItemLayoutHelper但这并不能解决问题,它只是将其推迟到下次 Java 内部更改时。因此,我认为这是一种解决方案。

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

4

2 回答 2

4

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

于 2012-09-11T21:48:31.643 回答
2

好吧,这可能已经有一段时间了,但我发现我可以使用我自己的常量而不是 sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET,只要它在有问题的代码中一直使用。绝不是理想的解决方案。

从好的方面来说,来自 sun 包的不良导入已进入编码规则检查。

于 2012-11-27T13:17:10.093 回答