una tablemodellistener segun pintar las funciona filas fila eventos ejemplo defaulttablecellrenderer condicion como colorear color celdas celda cambiar rendering timestamp jtable

rendering - tablemodellistener - pintar las filas de un jtable segun una condicion



Representación de celda JTable (2)

Encontré una solución, y aquí está

@Override public Class<? extends Object> getColumnClass(int column) { String value = getValueAt(0, column).getClass().toString(); if (value.equalsIgnoreCase("class java.sql.Timestamp")) { return JTextField.class; } return getValueAt(0, column).getClass(); }

Hay una mejor manera de hacerlo?

Obtengo datos para el DB y los visualizo en una tabla.

Mi getColumnClass es

@Override public Class<? extends Object> getColumnClass(int column) { return getValueAt(0, column).getClass(); }

cuando imprimo el valor, obtengo el nombre de la clase como java.sql.Timestamp, pero cuando aparece, tengo un problema, simplemente muestra dd / MM / aaaa, pero necesito que muestre dd / MM / aaaa HH : mm, ¿cómo puedo lograr esto?

Además de hacer esto, necesito verificar si el datatime es menor que el día de hoy y luego desactivar la fila


Sé que esta es una pregunta muy antigua, pero estaba teniendo un problema muy similar y decidí publicar una mejor solución para el problema.

En primer lugar, debe definir una nueva clase: TimestampCellRenderer.java

package gui; import java.text.DateFormat; import java.text.SimpleDateFormat; import javax.swing.table.DefaultTableCellRenderer; public class TimestampCellRenderer extends DefaultTableCellRenderer { DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); public TimestampCellRenderer() { super(); } public void setValue(Object value) { if (formatter == null) { formatter = DateFormat.getDateInstance(); } setText((value == null) ? "" : formatter.format(value)); } }

Y luego en su clase de GUI, agregue esta definición a su clase:

yourTable.getColumnModel().getColumn(1).setCellRenderer(new TimestampCellRenderer());

En este caso, decidí formatear la primera columna, pero sería una muy buena práctica definir una constante en su modelo de tabla.

La mejor parte de esto es que puede reutilizar su código con otras tablas que hagan uso del tipo de datos Timestamp.

¡Espero que esto ayude!