Como posso fazer um TableRowShorter entre duas datas

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));
                    }
                }
            }
        });

Eu uso este código. Quando seleciono um item da caixa de combinação, ele classifica a tabela com o item selecionado. Eu tenho uma segunda caixa de combinação. Digamos que o nome da combobox seja combobox2 e o item da combobox2 seja "Últimos 2 meses".

A primeira coluna da tabela é para datas. Quando seleciono o item de combobox2 (Últimos 2 meses), quero classificar a tabela. Eu só quero ver as linhas com no máximo 2 meses.

Por exemplo, se eu enviei a String ("01/01/2020"), só quero ver as linhas com ("01/01/2020") e após esta data.

Mas com este código só consigo ver a data que envio. Espero ter explicado bem. Posso compartilhar mais código se vocês precisarem.

Respostas

2 camickr Aug 19 2020 at 14:02

Por exemplo, se eu enviei a String ("01/01/2020"), só quero ver as linhas com ("01/01/2020") e após esta data.

Você precisa usar um "filtro de data".

Por exemplo, este filtro retornará todas as datas após uma data específica:

RowFilter.dateFilter(ComparisonType.AFTER, new Date());

Leia a RowFilterAPI para outros filtros que você pode usar.

Nota:

Você NÃO deve armazenar valores de String no modelo. Você deve armazenar a data em um objeto que representa uma data e, em seguida, usar um renderizador personalizado para formatar a data. Isso permitirá que o filtro de cima funcione corretamente.