справочная проблема при достижении ResourceMap String? - PullRequest
0 голосов
/ 31 августа 2009

Я занимаюсь разработкой настольных приложений на 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 не обновляется.

1 Ответ

0 голосов
/ 31 августа 2009

Файлы ресурсов предназначены для локализации. Таким образом, значения всех свойств загружаются с нетерпением при инициализации объекта ResourceBundle (который оборачивается ResourceMap). Значения не изменяются в памяти при изменении файла ресурсов после запуска приложения. Вам не нужно прослушивать изменения, когда ResourceMap используется для локализации.

Если вам нужно управлять конфигурацией (которую можно изменить во время выполнения), вам следует использовать другие классы / библиотеки в зависимости от используемой вами среды, но я сомневаюсь, что вы найдете такую, которая отслеживает изменения в файле свойств. Обычный способ это обрабатывается следующим образом:

  • у вас есть один файл свойств для значений по умолчанию вашей конфигурации реквизитов
  • вы предоставляете пользовательский интерфейс / программный интерфейс для изменения значений свойств во время выполнения
  • фактические свойства хранятся в еще одном файле, который воссоздается при каждом изменении свойства среды выполнения (если этот файл еще не существует - например, после первого запуска или после сброса конфигурации на значения по умолчанию), вы просто инициализируете его значениями по умолчанию
...