Come posso creare un TableRowShorter tra due 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));
                    }
                }
            }
        });

Uso questo codice. Quando seleziono un elemento della casella combinata, ordina la tabella con l'elemento selezionato. Ho una seconda casella combinata. Diciamo che il nome della casella combinata è casella combinata2 e l'elemento di casella combinata2 è "Ultimi 2 mesi".

La prima colonna della tabella è per le date. Quando seleziono l'elemento di combobox2 (Ultimi 2 mesi), voglio ordinare la tabella. Voglio solo vedere le righe con un massimo di 2 mesi.

Ad esempio, se ho inviato la stringa ("01/01/2020"), voglio solo vedere le righe con ("01/01/2020") e dopo questa data.

Ma con questo codice posso vedere solo la data che invio. Spero di averlo spiegato bene. Posso condividere più codice se ne avete bisogno.

Risposte

2 camickr Aug 19 2020 at 14:02

Ad esempio, se ho inviato la stringa ("01/01/2020"), voglio solo vedere le righe con ("01/01/2020") e dopo questa data.

È necessario utilizzare un "filtro data".

Ad esempio, questo filtro restituirà tutte le date dopo una data specifica:

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

Leggi l' RowFilterAPI per altri filtri che puoi utilizzare.

Nota:

NON si dovrebbero memorizzare valori di stringa nel modello. È necessario memorizzare la data in un oggetto che rappresenta una data e quindi utilizzare un renderer personalizzato per formattare la data. Ciò consentirà al filtro dall'alto di funzionare correttamente.