2011-12-22 8 views
0

私はSwingBindingsを新しくしました。合成オブジェクトのプロパティをバインドする方法

私はProjectという名前のBeanのリストを持っています。各プロジェクトはConfigという別のBeanへの参照を持っています。それぞれのConfigには2つの属性がありますが、どのようにしてswingbindingsとバインドして、Bean Configの2つの属性をjframeを構成するコンポーネントにバインドできますか?

プロジェクトのリストはコンボボックスにバインドされています。選択した項目を(プロジェクトの)コンボボックスから変更すると、フォーム内の現在選択されているプロジェクトに関連付けられているオブジェクト設定の値が更新されます。

+0

"SwingBinding"の意味を理解していない - 「beansbinding」という意味ですか? (Netbeansを使用する場合と使用しない場合) – kleopatra

答えて

2

はこれを試してみてください:

  1. ListCellRendererを実装する独自のセルレンダリングを作成します。
  2. コンボボックスにプロジェクトを含むレンダラーを割り当てます。 (comboBox.setRenderer(...)
  3. これで、プロジェクトインスタンスをcomboBoxに直接追加して、それを取得することもできます。
  4. ListCellRenderer in getListCellRendererComponent(.....) mehod cast value(2番目の引数)をプロジェクトに追加し、comboBoxに表示する適切な値を返します。 (プロジェクトの名前/タイトルかもしれません)
  5. コンボボックスにリスナーを追加します。 (ItemListener)、そのアクションメソッドでは、あなたのProjectオブジェクトであるcomboBoxの選択されたオブジェクトを取得します。
  6. このプロジェクトオブジェクトから、(プロジェクトオブジェクトのConfigオブジェクトへの参照を持っていると言ったように)Configオブジェクトを簡単に取得し、フレームにデータを設定できます。
+0

カスタムレンダラについて+ 1良い説明:私の推測では、OPは本当にバインディングを望んでいます... – kleopatra

+0

答えをありがとうございますが、このようなことを理解しています

 org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jcbProject, org.jdesktop.beansbinding.ELProperty.create("${selectedItem.config.updateDatabase}"), jCheckBox1, org.jdesktop.beansbinding.BeanProperty.create("selected")); bindingGroup.addBinding(binding); 

+0

selectedItem.config.updateDatabaseの式が機能していなかったため、プロパティの名前を返す禁止変数の静的変数の型に、変数の名前と同じ文字列が含まれている必要があります。 ありがとうございます。 –

関連する問題