2012-05-05 45 views
5

Tôi tự hỏi, nếu nó có thể thực hiện một ràng buộc dữ liệu trong java như chúng ta có thể làm điều này trong C#? Googled rất nhiều, nhưng không có câu trả lời cho tôi.
Tôi muốn liên kết, ví dụ, tập hợp thành Jtable và muốn JTable được cập nhật khi tôi thêm, xóa hoặc thay đổi một số thành phần trong bộ sưu tập.dữ liệu java ràng buộc với gui như trong C#

Cảm ơn trước!

Trả lời

0

sau khi điều tra, tôi phát hiện ra rằng không có gì tốt hơn việc sử dụng một mô hình tùy chỉnh. Trong this blog bạn có thể tìm thấy chỉ là một mô hình bảng hoàn hảo.

1

Nếu câu hỏi của bạn nói về java gui nói chung, Java FX 2 hỗ trợ ràng buộc nguyên bản.
Nếu đó là về Swing nói riêng (ví dụ JTable của bạn), there seems to be solutions too nhưng tôi không quen thuộc với chúng.

+1

vâng, đó thực sự là một bất lợi lớn của java, nếu bạn viết một ứng dụng máy tính để bàn xoay. Lib tốt nhất cho ràng buộc dữ liệu là BBB (BetterBeanBinding), nhưng không có ví dụ đầy đủ về cách chúng ta có thể sử dụng nó. Tôi thực sự thất vọng và thất vọng về java. –

+0

Bạn có bị trói buộc không? – assylias

+0

thực sự, tôi không bị ràng buộc với nó, nhưng tôi không quen thuộc với JavaFX ở tất cả và tôi nghĩ rằng xây dựng giao diện người dùng trên JavaFX là không đơn giản như trên Swing. Nếu tôi sai, xin hãy sửa tôi. Và btw, có bất kỳ nhà xây dựng UI JavaFX nào không? –

0

(Tôi trả lời câu trả lời này đầy đủ và không phải là nhận xét vì có một số mã) Có thể tôi đã trễ, nhưng bạn đã yêu cầu một ví dụ nhỏ bằng BBB, đây là một đoạn mã nhỏ mà bạn có thể thấy hữu ích:

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); 

Từ kinh nghiệm của tôi, việc học tập tương đối khó khăn như việc làm thế nào dễ dàng trở nên dễ dàng thực hiện nó một khi đã học được. Tôi biết tài liệu không phải là tuyệt vời, nhưng có một cái nhìn tại 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 và làm một số ví dụ tự dạy đã cứu tôi khỏi tấn giờ lãng phí. Ngoài BBB, còn có cả Băm mà tôi chưa thử.

Các vấn đề liên quan