¿Cómo puedo hacer un TableRowShorter entre dos Date

Aug 19 2020
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

2 camickr Aug 19 2020 at 14:02

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 RowFilterAPI 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.