sirve setvalueat que para make libreria iscelleditable how getvalueat funciona ejemplos como java swing jtable

java - setvalueat - libreria defaulttablemodel



TableModel vs ColumnModel: ¿quién posee el valor de la columna? (1)

¿Cuál es la diferencia entre JTable.getModel().getColumnName() y JTable.getColumnModel().getColumn(index).getHeaderValue() ? Los dos no parecen compartir ningún dato. Mi conjetura es que TableModel.getColumnName() indica la representación textual de una columna, mientras que TableColumn.getHeaderValue() y TableColumn.getHeaderRenderer() determinan el aspecto de la columna (no es necesario que sea texto sin formato).

¿Qué garantiza que los dos se mantienen sincronizados? ¿Qué pasa si los dos entran en conflicto?


Si un JTable se construye con un TableModel pero sin un TableColumnModel el JTable creará un TableColumnModel usando createDefaultColumnModel() y establecerá autoCreateColumnsFromModel en true. Cuando esta propiedad es verdadera, el JTable TableColumnModel el TableColumnModel con los valores del TableModel .

Nadie parece garantizar que los dos se mantienen sincronizados. En este caso, JTable.getColumnName() devolverá el nombre de la columna TableModel independientemente de lo que realmente muestre TableColumnModel en la pantalla.

Otra cosa interesante que noté es que TableModel está limitado a las columnas String, mientras que TableColumnModel permite pasar cualquier Objeto a TableCellRenderer . El Javadoc says que los valores están restringidos a cadenas, pero en realidad esto es específico de la implementación. Nada le impide escribir una implementación que utiliza un valor de JComponent .

En resumen : TableColumnModel es el propietario final de los valores de columna. TableColumnModel solo le pide valores a TableModel solo si aún no tiene uno. Por ejemplo, en el caso de que pase una columna a JTable.addColumn() sin especificar un valor de encabezado.