【发布时间】:2016-01-29 16:12:07
【问题描述】:
我正在使用基于 Eclipse 的软件,该软件允许创建应用程序并自动提供默认用户界面。 我正在尝试修改此界面(例如更改按钮图标、前景色等),但不幸的是我无法修改源代码,所以我试图通过 java 反射来实现。 借助 JD-GUI 之类的软件,我无论如何都可以查看已编译的 jar 文件,但我不想修改和重新编译 jar。 问题是这个接口是通过自定义类构建的,这些类扩展了 Swing 组件,并且查看 jar 文件,我发现实现了一些烦人的技巧。举个例子:
final class MyToggleButton extends JToggleButton{
MyToggleButton (ImageIcon defaultIcon){
super.setIcon(defaultIcon);
}
@Override
public void setIcon(Icon icon){}
}
对于以这种方式构建的类,如果我在 MyToggleButton 的实例上调用 setIcon() 方法,它不会生效,因为 override 方法内部没有代码(我认为)。所以我无法更改他们在特定按钮上默认设置的图标。
有人知道解决这个问题的方法吗? 提前感谢您的帮助。
附:我不是javer,但我对反射很熟悉。
【问题讨论】:
标签: java swing user-interface reflection