我目前正在使用 SynthLookAndFeel 修改我的 GUI,并且我在绘制表格时需要重新绘制表格 Grid,但是此方法在 JDK 中是私有的,并且在通过反射检索“paintGrid”方法时无法调用(这太复杂了覆盖其他公共方法来绘制表格网格)。
问问题
37 次
1 回答
1
您应该寻找一种不需要使用内部 API 的解决方案,因为它很脆弱,并且在任何小的 Java 更新上都可能失败。也就是说......在检索Method
实例后,调用setAccessible(true)
它 - 这将允许您调用它。
在 JDK 9 及更高版本上,这会导致控制台上出现警告,提示您正在使用内部 API - 在未来的 Java 版本(可能早于 12)中,访问将被禁止,并且您的代码将因异常而失败。要绕过警告和错误,请将命令行标志(如果您创建一个,则--add-opens java.desktop/javax.swing.plaf.synth=ALL-UNNAMED
替换为您的模块名称)到启动您的应用程序的命令中。ALL-UNNAMED
java
于 2018-08-26T12:22:46.373 回答