2009-02-18 6 views
5

¿Cuál es la relación entre un JTable, TableModel y TableData? Si solo modifico el TableData, ¿eso también cambia la visualización de datos en el componente JTable o tengo que llamar a algún método para sincronizar los dos? He mirado this, pero no me dice explícitamente ni me muestra la relación en términos de actualizacionesRelación entre JTable, TableModel y TableData

Respuesta

5

Cuando cambia un valor en los datos de TableModel, debe activar este evento. p.ej. cambiando el valor de una celda, llama al fireTableCellUpdated(row, col);.

Mire this más específicamente.

+2

fireTableCellUpdated (fila, col) solo se aplica a TableModels que son subclases de AbstractTableModel. –

2

Supongo que está utilizando la frase "TableData" para referirse solo a los datos que se muestran en la JTable. Para responder a su pregunta, ver actualizaciones automáticas o no depende de su TableModel y de cómo interactúa con sus datos.

Un modelo de tabla debe desencadenar eventos cuando el modelo de datos subyacente ha cambiado, esto a su vez notificará a JTable que se ha producido un cambio y se debe volver a dibujar. Entonces, en términos de una relación, JTable escucha los cambios de eventos en TableModel; TableModel no tiene conocimiento de JTable.

Dependiendo de cómo esté organizado su modelo, los datos debajo podrían cambiar sin que lo sepa el modelo de tabla. En este caso, si tiene un paso directo de TableModel a los datos, los valores en pantalla cambiarán cuando ocurra una repintura de manera natural (cambio de tamaño de la pantalla, movimiento del mouse, etc.), pero si desea forzar el evento, debería obtener el TableModel para notificar a JTable a través de los eventos mencionados anteriormente. En términos de relación, TableModel conoce los datos de la tabla, pero los datos de la tabla no tienen conocimiento del modelo (generalmente). TableModel puede o no estar escuchando en los datos para cambios.

2

Al configurar TableModel en una JTable, la tabla agrega un observador (TableModelListener) para informarse sobre los cambios en el modelo.

Al cambiar los datos en el modelo, se espera que el modelo notifique a los oyentes registrados activando un TableModelEvent. El evento en sí puede contener información complementaria sobre la granularidad del cambio (ya sea que la estructura haya cambiado significativamente o solo se hayan cambiado algunos datos de celda) para permitir que JTable haga una actualización optimizada de la vista.

Cuestiones relacionadas