2010-05-20 58 views
4

我在使用Swing Application Framework的組件資源注入時遇到了問題,我閱讀了Sun提供的教程,它有點用。使用Swing應用程序框架進行組件資源注入的問題

的情況是,我有一個由德SAF提供的SingleFrameApplication延伸的類Program,現在我想找到自己的組件(按鈕和標籤等)的從屬性的文本文件並將其按預期工作對於那個Program類,(我創建了一個名爲resources的子目錄,並將Program.properties文件放在那裏)。但是,我在名爲mainpkg.gui的子包(Program位於mainpkg包內)中有一個MainFrame,並且我創建了相應resources子包用於放置MainFrame.properties文件,但它不起作用!我不能捆(自動,我想,如果我用的是ResourceMap.getXXX()方法我能得到的東西。

我在做什麼錯?

提前感謝!

+0

您的MainFrame是'SingleFrameApplication'的子類嗎?或者它是'JFrame'的直接後代? – Riduidel 2011-01-26 16:59:08

+0

您的MainFrame是動態實現的嗎?您可以動態注入資源Application.getInstance()。getContext()。getResourceMap()。injectComponent(this); – Joshua 2011-11-02 15:58:13

回答

1

我知道這是一個老問題,但在這裏就是我想的問題是:

首先,如果你使用SingleFrameApplication,你不應該創建自己的JFrame相反,你應該有一個startup()方法是這樣的:

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

現在,show(view)方法負責將所有這些資源注入到組件中。但是,在您撥打show()時,它只處理view組件層次結構中的組件。如果稍後添加某些內容,則必須自己注入資源。下面是你如何做到這一點的一個例子:

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

我希望這可以幫助你或其他人有同樣的問題。

相關問題