2009-08-31 2 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

+0

Это зависит от того, как было начато изменение вашего свойства (или предпочтение быть более аккуратным) - когда вы предоставляете форму, в которой пользователь может редактировать настройки, часто появляется кнопка «Применить», которая запускает передачу значений из формы в объект, используемый вашим приложением как рабочее представление фактических предпочтений. Кроме того, изменение фактических предпочтений должно инициировать сохранение новых настроек в файле. Инициирование этого действия может быть либо частью обработчика кнопки «Применить», либо вы можете прикрепить его как слушателя для некоторого PreferenceChangeEvent или так ... – schmeedy

Смежные вопросы