2009-08-31 19 views
0

我一直在用Java開發桌面應用程序。在這裏,它顯示了我如何到達屬性文件的字符串。字符串的鍵值是HDI.Device.1.ID當到達ResourceMap的字符串時引用問題?

org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(HDIManagementApp.class).getContext().getResourceMap(HDIManagementView.class);String ID=resourceMap.getString("HDI.Device.1.ID"); 

問題是:我不想通過值調用該字符串。我想通過引用來調用它。因爲,同時,我想爲這個對象使用Listeners。如果「HDI.Device.1.ID」值更新,那麼我會做一些事情。 `

//After changes "mystr", we inform the table model about new value 

    MyString mystr = new yaziyorumartik.data.MyString(); 
    mystr.addPropertyChangeListener(new java.beans.PropertyChangeListener() { 
     public void propertyChange(PropertyChangeEvent evt) { 
      Object object=evt.getNewValue(); 
      tableModel.setValueAt(object.toString(), 0, 5); 
      throw new UnsupportedOperationException("Not supported yet."); 
     } 
    });` 

mystr.setValue(ID)

當myStr的HDI.Device.1.ID屬性文件中的更新,然後myStr中不更新。

回答

0

資源文件旨在用於本地化。因此,所有屬性的值在ResourceBundle對象(由ResourceMap包裝)初始化時被加載。在應用程序啓動後修改資源文件時,內存中的值不會更改。當ResourceMap用於本地化時,您不需要監聽更改。

如果您需要管理配置(可在運行時更改),您應該使用其他類/庫,具體取決於您使用的框架,但我懷疑您會找到一個監視屬性文件的更改。這是處理的常用方法如下:

  • 你有你的配置的默認值一個屬性文件道具
  • 您在運行時更改的屬性值提供了一個UI /編程接口
  • 實際屬性存儲在另一個文件中,該文件在每個運行時屬性更改時重新創建(如果此文件尚不存在 - 例如首次啓動後或重置配置爲默認值後),則只需使用默認值初始化該文件
+0

好。我已經完成了界面。我所需要的是如何在每次運行時屬性更改時存儲實際屬性? – Iguramu 2009-08-31 14:31:07

+0

這取決於你的財產變化(或喜好更加激勵)是如何啓動的 - 當你提供一個表單,用戶可以編輯偏好時,通常會有一個按鈕叫做「應用」,它會觸發表單中的值您的應用程序使用的一個對象,作爲實際首選項的工作表示。此外,實際偏好的改變應該觸發將新偏好存儲到文件。此操作的啓動可以是「應用」按鈕處理程序的一部分,或者您可以將其作爲某個PreferenceChangeEvent的偵聽程序附加到... – schmeedy 2009-08-31 16:59:08