我目前正在使用 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
命令中。