是否可以反映JDK 10私有方法(SynthLookAndFeel - SynthTableUI类中"paintGrid"的方法)?



我目前正在使用 SynthLookAndFeel 修改我的 GUI,当我绘制表格时我需要重新绘制表格网格,但此方法在 JDK 中是私有的,当通过反射检索"paintGrid"方法时无法调用(覆盖其他公共方法来绘制表格网格太复杂了(。

您应该寻找一种不需要使用内部 API 的解决方案,因为它很脆弱,并且在任何次要的 Java 更新时都可能失败。可是。。。检索Method实例后,对其调用setAccessible(true)- 这将允许您调用它。

在 JDK 9 及更高版本上,这会导致控制台上出现警告,指出您正在使用内部 API - 在未来的 Java 版本(可能最早为 12 年(中,将禁止访问,并且您的代码将失败并出现异常。若要绕过警告和错误,请将命令行标志--add-opens java.desktop/javax.swing.plaf.synth=ALL-UNNAMED(如果创建模块名称,请将ALL-UNNAMED替换为模块的名称(添加到启动应用的java命令中。

最新更新