Creazione e utilizzo di più filtri / ricerche mediante JTable o GlazedLists
-
06-07-2019 - |
Domanda
Ho cercato come utilizzare più filtri qui con una tabella regolare e tutte le risposte hanno indicato GlazedLists
. Tuttavia, le risposte non hanno specificato come usarlo. Sono stato in grado di far funzionare un filtro, ma non so come ottenerne più di uno.
Per un filtro ho usato:
// nameE is a BasicEventList containing classes (name) which
// contain the table values
TextFilterList filtered = new TextFilterList(nameE);
JTextField filterEdit = filtered.getFilterEdit();
// Inside the table value class (name) there is a filter for myName
public void getFilterStrings(List baseList) {
baseList.add(myName);
}
Duplicazione del codice e creazione di un altro < code> JTextField non funziona. Ho cercato questo problema e sembra CompositeMatcherEditor
potrebbe funzionare. Il problema è che non so come implementarlo.
Inoltre, sto usando Eclipse. Ho scaricato GlazedLists
1.8.0 e l'ho scaricato in Eclipse. Tuttavia, non posso usarlo. Ho quadrati rossi dappertutto (tranne per la cartella di origine)! Ho persino aggiunto il file jar.
Spero di essermi spiegato correttamente. Per favore fatemi sapere se devo espandere.
My Pastebin: Nome , Browser , TableFormat , TableModel
Soluzione
TextFilterList è obsoleto - vedi javadocs - ma questo è un problema secondario.
Esistono diversi approcci che è possibile utilizzare qui: se si desidera veramente semplice, avvolgere l'elenco dei filtri in un altro elenco di filtri:
EventList filtered = new FilterList(new FilterList(nameE, myFirstMatcherEditor), mySecondMatcherEditor);
Un modo migliore è utilizzare più editor di matcher per creare un CompositeMatcherEditor :
EventList filtered = new FilterList(nameE, new CompositeMatcherEditor(myFirstMatcherEditor, mySecondMatcherEditor));
puoi usare setMode per controllare se i tuoi editor sono combinati usando il comportamento AND o OR.
Ecco Devi leggere le informazioni sull'uso degli elenchi di filtri.
Anche gli screencast disponibili qui valgono l'investimento di pochi minuti.