2012-05-05 9 views
5

Mi chiedo, se è possibile fare un collegamento dati in java come possiamo fare questo in C#? Cercate molto su google, ma per me non ci sono risposte.
Desidero associare, ad esempio, la raccolta a Jtable e voglio che JTable sia aggiornato quando aggiungo, elimini o modifico alcuni elementi nella raccolta.java data binding to gui like in C#

Grazie in anticipo!

risposta

0

ben dopo le indagini ho scoperto che non c'è niente di meglio che usare un modello personalizzato. In this blog puoi trovare solo modelli di tavolo perfetti.

1

Se la tua domanda riguarda java gui in generale, Java FX 2 supporta l'associazione nativamente.
Se si tratta di Swing in particolare (l'esempio di JTable), there seems to be solutions too ma non mi è familiare.

+1

sì, questo è davvero un enorme svantaggio di java, se si scrive un'applicazione desktop swing. La migliore lib per il data binding è BBB (BetterBeanBinding), ma non ci sono esempi completi di come possiamo usarlo. Sono davvero frustrato e deluso da Java. –

+0

Sei legato allo swing? – assylias

+0

in realtà, non sono legato ad esso, ma non ho alcuna familiarità con JavaFX e penso che la costruzione dell'interfaccia utente su JavaFX non sia così semplice come su Swing. Se sbaglio, per favore, correggimi. E a proposito, c'è qualche costruttore di UI JavaFX? –

0

(Sto rispondendo a questo come una risposta completa e non un commento dato che c'è del codice incluso) Forse sono in ritardo, ma hai chiesto un piccolo esempio usando BBB quindi ecco un piccolo pezzo di codice che potresti trovare utili:

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

In base alla mia esperienza, l'apprendimento è proporzionalmente dannatamente duro e diventa incredibilmente facile implementarlo una volta appreso. So che la documentazione non è eccezionale, ma dare un'occhiata allo 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 e fare alcuni esempi di auto insegnamento mi ha risparmiato da tonnellate di ore sprecate. Oltre a BBB ci sono anche JGoodies Bindings che personalmente non ho provato.