1

私は現在、Swing を使用して Java のデスクトップ アプリケーションに取り組んでいます。jdesktop.org の beanbinding フレームワークを使用して、GUI コンポーネントとデータ オブジェクトの状態を同期しています。しかし、フレームワークで問題が発生しており、GUI コンポーネントとデータ オブジェクトの間で状態情報を手動でやり取りする必要があります。

BeanBinding フレームワーク (NetBeans でも使用されていると思いますか?) に代わるものはありますか? 推奨できる戦略はありますか (バインディングをまったく使用しない、代わりに何をすべきかなど)?

BeanBinding で私が直面している問題について知りたい場合は、次のようにします。

  • JTables内のTableModelを置き換えます(そのため、独自の行を使用したり、行を削除したりすることはできません)
  • selectedItem や selectedObject など、特定のプロパティにアクセスできない、または使用できない (少なくとも JComboBox、JList などで一貫して)。
  • 特定のプロパティは、読み取り専用または書き込み専用です (selectedItem や selectedObject など)。
  • 値 null に特別な値をバインドすることはできますが、たとえば、カスタム マッピング関数などを使用してリスト内の数値を JComboBox 内の文字列にマップすることはできません (適切な toString メソッドを使用して特別なクラスを作成できることはわかっていますが、ただし、これにより、データセット用に特別なラッパー オブジェクトを作成する必要があります)
  • ...
4

1 に答える 1

2

使用可能ではありますが、Beansbinding は死んでいます。そのバージョン番号を取得するには程遠いときに、人為的に 1.x 状態にプッシュされ、それ以来あまり変更されていません。あなたが発見した問題が何であれ、それらは修正されません-あなたが自分でそれをしない限り:-) 特定の箇条書きについて:

  • 全体的な考え方は、TableModel がオブジェクトのリストであり、その列がオブジェクトのプロパティ (Bean または EL) にバインドされているということです。通常、変更をサポートするObservableListです。
  • JComboBox は建設現場です。JList/JTable のセレクション バインディングが利用可能で一貫性がある
  • (単一の) 選択を書き込み可能にすることは、それほど大したことではありません (インキュベーターで JXTable のアダプターを使用して実験しました)。書き込み専用のプロパティを見たことがありません。
  • すべてのバインディング フレームワークと同様に、値の型をマップするにはコンバーターが必要です (レンダリングとは関係ありませんが、編集では役割を果たします)。

明らかな現在の代替手段は JGoodies Binding です。しばらく調べていませんでしたが、最近新しいバージョンが出てきたので、間違いなく開発中で使用されていることがわかりました。将来の代替手段は fx バインディングかもしれません。まだ初期段階にあり、親切な魂がそのベアボーンの周りに使用可能なフレームワークを構築するのを待っています。

于 2011-11-14T09:54:34.863 に答える