Si tomo una JTable
y especificar ClassType de una columna en ella de modelo de la siguiente manera:¿Cómo marcar la entrada de la celda JTable como inválida?
DefaultTableModel model = new DefaultTableModel(columnNames, 100) {
@Override
public Class<?> getColumnClass(int columnIndex) {
return Integer.class;
}};
Entonces cada vez que un usuario intenta introducir un valor double
en la tabla, Swing rechaza automáticamente la entrada y establece el contorno de la célula para rojo.
Quiero que ocurra el mismo efecto cuando alguien ingresa una entrada 'negativa o 0' en la celda. Tengo esto:
@Override
public void setValueAt(Object val, int rowIndex, int columnIndex) {
if (val instanceof Number && ((Number) val).doubleValue() > 0) {
super.setValueAt(val, rowIndex, columnIndex);
}
}
}
Esto evita que la célula aceptar cualquier valor no positivos, pero doens't establecer el color a rojo y salen de la célula como editables.
Traté de ver cómo JTable está haciendo el rechazo por defecto, pero parece que no puedo encontrarlo.
¿Cómo puedo hacer que rechace la entrada no positiva de la misma forma que rechaza la entrada que no es entera?
Gracias
Gracias esto es mucho más limpio. Regresé y actualicé mi código para que fuera menos genérico, ya que solo buscaba usarlo en un lugar específico donde pudiera controlar su uso. – Cuga
Ver también esto [alternativa] (http://stackoverflow.com/a/13510756/230513). – trashgod
@trashgod +1 hey trashgod ¿Es una buena idea usar un documentFilter como alternativa para no dejar que los tipos de usuario? – nachokk