C#でこれを行うことができるように、Javaでデータバインディングを作成することは可能でしょうか?たくさんググったが、答えはない。
たとえば、コレクションをJtableにバインドし、コレクション内のいくつかの要素を追加、削除、または変更したときにJTableが更新されるようにしたい。
前もって感謝します!
C#でこれを行うことができるように、Javaでデータバインディングを作成することは可能でしょうか?たくさんググったが、答えはない。
たとえば、コレクションをJtableにバインドし、コレクション内のいくつかの要素を追加、削除、または変更したときにJTableが更新されるようにしたい。
前もって感謝します!
はい、JavaBeansバインディングがあります。
を見てみましょう:
JTableの例として、観察可能なコレクションがあります。例:
ObservableList<Employee> employees =
ObservableCollections.observableList(
new ArrayList<Employee>());
調査の結果、カスタムモデルを使用するよりも良い方法はないことがわかりました。このブログでは、完璧なテーブルモデルを見つけることができます。
(コードが含まれているため、コメントではなく完全な回答として回答しています)遅れているかもしれませんが、BBBを使用した小さな例を求められたので、役立つと思われるコードを次に示します。
public static final Property<PatientModel, Long> PATIENT_MODEL_PATIENT_ID_PROPERTY_OBJECT =
BeanProperty.create(Patient.PATIENT_ID_PROPERTY);
public static final Property<PatientModel, String> PATIENT_MODEL_FIRST_NAME_PROPERTY_OBJECT =
BeanProperty.create(Patient.FIRST_NAME_PROPERTY);
public static final Property<PatientModel, String> PATIENT_MODEL_MIDDLE_NAME_PROPERTY_OBJECT =
BeanProperty.create(Patient.MIDDLE_NAME_PROPERTY);
public static final Property<PatientModel, String> PATIENT_MODEL_SURNAME_PROPERTY_OBJECT =
BeanProperty.create(Patient.SURNAME_PROPERTY);
public static final Property<PatientModel, String> PATIENT_MODEL_SECOND_SURNAME_PROPERTY_OBJECT =
BeanProperty.create(Patient.SECOND_SURNAME_PROPERTY);
public static final Property<PatientModel, Sex> PATIENT_MODEL_SEX_PROPERTY_OBJECT =
BeanProperty.create(Patient.SEX_PROPERTY);
public static final Property<PatientModel, String> PATIENT_MODEL_BIRTH_PLACE_PROPERTY_OBJECT =
BeanProperty.create(Patient.BIRTH_PLACE_PROPERTY);
public static final Property<PatientModel, Calendrical> PATIENT_MODEL_BIRTH_DATE_PROPERTY_OBJECT =
BeanProperty.create(Patient.BIRTH_DATE_PROPERTY);
public static final Property<PatientModel, Period> PATIENT_MODEL_AGE_PROPERTY_OBJECT =
BeanProperty.create(Patient.AGE_PROPERTY);
(...)
private ObservableList<PatientModel> model;
private JTable selectionTable;
(...)
JTableBinding<PatientModel, List<PatientModel>, JTable> selectionTableBinding
= SwingBindings.createJTableBinding(UpdateStrategy.READ_WRITE, this.model, this.selectionTable);
selectionTableBinding.addColumnBinding(PATIENT_MODEL_PATIENT_ID_PROPERTY_OBJECT);
selectionTableBinding.addColumnBinding(PATIENT_MODEL_FIRST_NAME_PROPERTY_OBJECT);
selectionTableBinding.addColumnBinding(PATIENT_MODEL_SURNAME_PROPERTY_OBJECT);
selectionTableBinding.addColumnBinding(PATIENT_MODEL_SEX_PROPERTY_OBJECT);
selectionTableBinding.addColumnBinding(PATIENT_MODEL_BIRTH_PLACE_PROPERTY_OBJECT);
selectionTableBinding.addColumnBinding(PATIENT_MODEL_BIRTH_DATE_PROPERTY_OBJECT);
selectionTableBinding.addColumnBinding(PATIENT_MODEL_AGE_PROPERTY_OBJECT);
私の経験から、学習は、一度学習すると途方もなく簡単に実装できるようになるのと同じくらい大変です。ドキュメントが優れていないことは知っていますが、http://www.jarvana.com/jarvana/view/it/tidalwave/betterbeansbinding/betterbeansbinding-swingbinding/1.3.0/betterbeansbinding-swingbinding-1.3.0-javadocをご覧ください。 jar!/org/jdesktop/swingbinding/JTableBinding.htmlといくつかの自己学習の例を実行することで、膨大な時間の無駄を省くことができました。BBBとは別に、私が個人的に試したことのないJGoodiesBindingsもあります。