0

Javaでデスクトップアプリケーションを開発しています。ここでは、プロパティ ファイルの文字列に到達する方法を示します。文字列のキー値は 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");

問題は、その文字列を値で呼び出したくないということです。参考にさせていただきたいと思います。同時に、そのオブジェクトにリスナーを使用したいからです。「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 がローカライズに使用されている場合、変更をリッスンする必要はありません。

構成を管理する必要がある場合 (実行時に変更可能)、使用するフレームワークに応じて他のクラス/ライブラリを使用する必要がありますが、プロパティ ファイルの変更を監視するものは見つからないでしょう。これを処理する一般的な方法は次のとおりです。

  • 構成プロパティのデフォルト値用のプロパティ ファイルが 1 つあります。
  • 実行時にプロパティ値を変更するための UI / プログラム インターフェイスを提供する
  • 実際のプロパティは、実行時のプロパティが変更されるたびに再作成される別のファイルに保存されます (このファイルがまだ存在しない場合 - たとえば、最初の起動後または構成をデフォルトにリセットした後)、デフォルトで初期化するだけです。
于 2009-08-31T11:37:50.617 に答える