2012-05-05 15 views
5

Me pregunto si es posible hacer un enlace de datos en Java como podemos hacer esto en C#? Busqué en Google, pero no hay respuestas para mí.
Quiero vincular, por ejemplo, la recopilación a Jtable, y quiero que JTable se actualice cuando agregue, elimine o cambie algunos elementos en la recopilación.enlace de datos Java a la interfaz gráfica de usuario como en C#

¡Gracias de antemano!

Respuesta

0

bien después de la investigación Descubrí que no hay nada mejor que usar un modelo personalizado. En this blog puedes encontrar modelos de tablas perfectos.

1

Si su pregunta es sobre Java Gui en general, Java FX 2 admite el enlace de forma nativa.
Si se trata de Swing en particular (su ejemplo de JTable), there seems to be solutions too pero no estoy familiarizado con ellos.

+1

Sí, eso es realmente una gran desventaja de Java, si escribes una aplicación de escritorio oscilante. La mejor lib para el enlace de datos es BBB (BetterBeanBinding), pero no hay ejemplos completos de cómo podemos usarlo. Estoy realmente frustrado y decepcionado con Java. –

+0

¿Estás atado al columpio? – assylias

+0

en realidad, no estoy vinculado, pero no estoy familiarizado con JavaFX en absoluto y creo que construir UI en JavaFX no es tan simple como en Swing. Si estoy equivocado, por favor, corrígeme. Y, por cierto, ¿hay constructores de UI JavaFX? –

0

(Estoy respondiendo esto como una respuesta completa y no un comentario ya que hay algún código incluido) Tal vez llego tarde, pero me pediste un pequeño ejemplo usando BBB así que aquí hay un pequeño código que podrías serle de utilidad:

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

Según mi experiencia, el aprendizaje es proporcionalmente tan difícil como cuán ridículamente fácil se vuelve implementarlo una vez que se aprende. Sé que la documentación no es excelente, pero echar un vistazo a 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 y hacer algunos ejemplos de autoaprendizaje me ha ahorrado toneladas de horas desperdiciadas. Aparte de BBB también hay enlaces de JGoodies que personalmente no he probado.

Cuestiones relacionadas