java - 使用 Swing 应用程序框架的组件资源注入(inject)问题

标签 java swing saf

我在使用 Swing Application Framework 时遇到问题的 Component Resource Injection,我阅读了 Sun 提供的教程并且它有点工作。

情况是我有一个从 SingleFrameApplication 扩展的类 Program由 de SAF 提供,现在我想从属性文件中获取我的组件(按钮和标签等)的文本,并且它按预期为 Program 类工作,(我创建了一个名为的子目录resources 并将 Program.properties 文件放在那里)。但是,我在名为 mainpkg.gui 的子包中有一个 MainFrame(Programmainpkg 包中)我创建了相应的 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/

相关文章:

java - 找不到带有 ADT 插件的 Eclipse 的 Android SDK

java - 在 JSP 中使用 Bean

java - 如何在 ant 文件集或 src 中使用通配符

java - JSlider 最后的值

java - 无法在 JFrame 上绘画

android - 存储访问框架 : keep file permissions after revoke tree permissions

java - Swing 应用程序框架 session 存储

java - Request、Session 和 ServletContext 中属性的区别

java - 设置Java的登录系统和权限