¿Cómo puedo hacer un TableRowShorter entre dos Date
combobox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
if(arg0.getStateChange()==ItemEvent.SELECTED) {
if(!combobox.getSelectedItem().toString().equals(items[0])) { //items[] for the items of the combobox.
DefaultTableModel table1 = (DefaultTableModel)table.getModel();
String search =combobox.getSelectedItem().toString();
TableRowSorter<DefaultTableModel> tr = new TableRowSorter<DefaultTableModel>(table1);
table.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter(search));
}
}
}
});
Yo uso este código. Cuando selecciono un elemento del cuadro combinado, ordena la tabla con el elemento seleccionado. Tengo un segundo cuadro combinado. Digamos que el nombre de combobox es combobox2 y el elemento de combobox2 es "Últimos 2 meses".
La primera columna de la tabla es para fechas. Cuando selecciono el elemento de combobox2 (Últimos 2 meses), quiero ordenar la tabla. Solo quiero ver filas con un máximo de 2 meses.
Por ejemplo, si envié la Cadena ("01/01/2020"), solo quiero ver las filas con ("01/01/2020") y después de esta fecha.
Pero con este código solo puedo ver la fecha que envío. Espero haberlo explicado bien. Puedo compartir más código si lo necesitan.
Respuestas
Por ejemplo, si envié la Cadena ("01/01/2020"), solo quiero ver las filas con ("01/01/2020") y después de esta fecha.
Debe utilizar un "filtro de fecha".
Por ejemplo, este filtro devolverá todas las fechas posteriores a una fecha específica:
RowFilter.dateFilter(ComparisonType.AFTER, new Date());
Lea la RowFilter
API para conocer otros filtros que puede usar.
Nota:
NO debería almacenar valores de cadena en el modelo. Debe almacenar la fecha en un objeto que represente una fecha y luego usar un renderizador personalizado para formatear la fecha. Esto permitirá que el filtro de arriba funcione correctamente.