使用Swing应用程序框架进行组件资源注入的问题
作者:互联网
我在使用Swing Application Framework的组件资源注入时遇到问题,我阅读了Sun提供的教程,它有点起作用.
这个案例是我有一个类程序,它扩展自de SAF提供的SingleFrameApplication
,现在我想从属性文件中获取我的组件(按钮和标签等)的文本,它可以按照预期的那个Program类运行,(我创建了一个名为resources的子目录,并将Program.properties文件放在那里).但是,我在一个名为mainpkg.gui的子包中有一个MainFrame(该程序在mainpkg包中),我创建了相应的资源subsubpackage来放置MainFrame.properties文件,但它不起作用!我无法获得捆绑(自动,我想如果我使用ResourceMap.getXXX()方法我会得到的东西.
我究竟做错了什么?
提前致谢!
解决方法:
我知道这是一个老问题,但这就是我认为的问题:
首先,如果您使用SingleFrameApplication,则不应创建自己的JFrame.相反,你应该有一个这样的startup()方法:
@Override
protected void startup() {
final FrameView view = getMainView();
view.setMenuBar(createMenuBar());
view.setComponent(createMainComponent());
show(view);
}
现在,show(view)方法负责将所有这些资源注入到组件中.但是,在您调用show()时,它仅处理视图的组件层次结构中的组件.如果稍后添加内容,则必须自己注入资源.这是一个如何做到这一点的例子:
public void injectResources(final Component root) {
final ResourceMap resourceMap = applicationContext.getResourceMap(root
.getClass(), Object.class);
resourceMap.injectComponents(root);
resourceMap.injectFields(root);
}
我希望这可以帮助你或其他人解决同样的问题.
标签:java,swing,saf 来源: https://codeday.me/bug/20190710/1422540.html