4

Swingアプリケーションフレームワークのコンポーネントリソースインジェクションの使用に問題があります。Sunが提供するチュートリアルを読みましたが、うまくいきました。

Programケースは、de SAFによって提供されたものから拡張されたクラスを持っている場合です。次にSingleFrameApplication、プロパティファイルからコンポーネント(ボタンやラベルなど)のテキストを取得したいのですが、そのProgramクラスで期待どおりに機能します(Iと呼ばれるサブディレクトリを作成し、そこにファイルresourcesを配置しProgram.propertiesます)。しかし、私はMainFrameという名前のサブパッケージ内にありmainpkg.gui(はパッケージProgram内にあります)、ファイルを配置するための対応するサブサブmainpkgパッケージを作成しましたが、機能しません!バンドルを取得できません(自動的に、取得する方法を使用すると思います。resourcesMainFrame.propertiesResourceMap.getXXX()

私は何が間違っているのですか?

前もって感謝します!

4

1 に答える 1

1

これは古い質問であることは知っていますが、問題は次のとおりです。

まず、 を使用する場合はSingleFrameApplication、独自の を作成しないでくださいJFramestartup()代わりに、次のようなメソッドが必要です。

@Override
protected void startup() {
    final FrameView view = getMainView();
    view.setMenuBar(createMenuBar());
    view.setComponent(createMainComponent());
    show(view);
}

これで、show(view)メソッドはこれらすべてのリソースをコンポーネントに注入します。viewただし、 を呼び出した時点でのコンポーネント階層にあるコンポーネントのみを処理しますshow()。後で何かを追加する場合は、自分でリソースを注入する必要があります。これを行う方法の例を次に示します。

public void injectResources(final Component root) {
    final ResourceMap resourceMap = applicationContext.getResourceMap(root
            .getClass(), Object.class);
    resourceMap.injectComponents(root);
    resourceMap.injectFields(root);
}

これがあなたまたは同じ問題を抱えている他の誰かに役立つことを願っています。

于 2012-08-30T06:44:07.163 に答える