0

我一直在用 Java 开发桌面应用程序。在这里,它显示了我如何到达属性文件的字符串。String的键值是HDI.Device.1.ID

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 不会更新。

4

1 回答 1

0

资源文件用于本地化。因此,所有属性的值都会在 ResourceBundle 对象(由 ResourceMap 包装)初始化时立即加载。当您在应用程序启动后修改资源文件时,内存中的值不会更改。当 ResourceMap 用于本地化时,您不需要监听更改。

如果您需要管理配置(可以在运行时更改),您应该根据您使用的框架使用其他类/库,但我怀疑您会找到一个监视属性文件以进行更改的类/库。常见的处理方式如下:

  • 您有一个用于配置道具默认值的属性文件
  • 您提供了一个 UI / 编程接口,用于在运行时更改属性值
  • 实际属性存储在另一个文件中,该文件在每次运行时属性更改时重新创建(如果此文件尚不存在 - 例如在首次启动或将配置重置为默认值之后),您只需使用默认值初始化它
于 2009-08-31T11:37:50.617 回答