Comment puis-je créer un TableRowShorter entre deux dates

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

J'utilise ce code. Lorsque je sélectionne un élément de la liste déroulante, il trie le tableau avec l'élément sélectionné. J'ai une deuxième combobox. Disons que le nom de combobox est combobox2 et que l'élément de combobox2 est "les 2 derniers mois".

La première colonne du tableau concerne les dates. Lorsque je sélectionne l'élément de combobox2 (2 derniers mois), je veux trier le tableau. Je veux juste voir les lignes avec un maximum de 2 mois.

Par exemple si j'ai envoyé la chaîne ("01/01/2020"), je veux seulement voir les lignes avec ("01/01/2020") et après cette date.

Mais avec ce code, je ne peux voir que la date que j'envoie. J'espère que je l'ai bien expliqué. Je peux partager plus de code si vous en avez besoin.

Réponses

2 camickr Aug 19 2020 at 14:02

Par exemple si j'ai envoyé la chaîne ("01/01/2020"), je veux seulement voir les lignes avec ("01/01/2020") et après cette date.

Vous devez utiliser un "filtre de date".

Par exemple, ce filtre retournera toute la date après une date spécifique:

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

Lisez l' RowFilterAPI pour d'autres filtres que vous pouvez utiliser.

Remarque:

Vous ne devez PAS stocker de valeurs de chaîne dans le modèle. Vous devez stocker la date dans un objet qui représente une date, puis utiliser un moteur de rendu personnalisé pour mettre en forme la date. Cela permettra au filtre d'en haut de fonctionner correctement.