我在使用 Swing Application Framework 时遇到问题的 Component Resource Injection,我阅读了 Sun 提供的教程并且它有点工作。
情况是我有一个从 SingleFrameApplication
扩展的类 Program
由 de SAF 提供,现在我想从属性文件中获取我的组件(按钮和标签等)的文本,并且它按预期为 Program
类工作,(我创建了一个名为的子目录resources
并将 Program.properties
文件放在那里)。但是,我在名为 mainpkg.gui
的子包中有一个 MainFrame
(Program
在 mainpkg
包中)我创建了相应的 resources
subsubpackage 用于放置 MainFrame.properties
文件,但它不起作用!我无法获取 bundle (自动获取,我想如果我使用 ResourceMap.getXXX()
方法我会获取这些内容。
我做错了什么?
提前致谢!
最佳答案
我知道这是一个老问题,但我认为这是问题所在:
首先,如果您使用 SingleFrameApplication
,则不应创建自己的 JFrame
。相反,您应该有一个像这样的 startup()
方法:
@Override
protected void startup() {
final FrameView view = getMainView();
view.setMenuBar(createMenuBar());
view.setComponent(createMainComponent());
show(view);
}
现在,show(view)
方法负责将所有这些资源注入(inject)组件。但它只处理在您调用 show()
时位于 view
组件层次结构中的组件。如果您稍后添加一些东西,您将不得不自己注入(inject)资源。以下是您如何做到这一点的示例:
public void injectResources(final Component root) {
final ResourceMap resourceMap = applicationContext.getResourceMap(root
.getClass(), Object.class);
resourceMap.injectComponents(root);
resourceMap.injectFields(root);
}
希望这对您或遇到同样问题的其他人有所帮助。
关于java - 使用 Swing 应用程序框架的组件资源注入(inject)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2877401/