Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Filter JTable only one one column

I have a JTable and I would like to do a filter from a JTextfield but only filter the results based on one column and not to search all columns.

I have my JTable I can filter but my filter will filter and search every column of the table I want to restrict it to one column

Can it be done ?

like image 528
CMP Avatar asked Apr 06 '11 11:04

CMP


3 Answers

listen to changes in the textFields document and set the appropriate rowFilter limited to the column you want to filter:

 // on document change
 RowFilter rowFilter = RowFilter.regexFilter(textField.getText(), myColumn);
 table.getRowSorter().setRowFilter(rowFilter);

(type-cast and guard against empty textfield ommitted)

like image 172
kleopatra Avatar answered Nov 14 '22 22:11

kleopatra


Keep a master copy of all the rows (or supporting data) in the background.

When searching, take the search criteria from the text field and rebuild the table model by only adding items that match the criteria. If the text field is empty then add all rows.

like image 20
jzd Avatar answered Nov 14 '22 23:11

jzd


You can extend envelope table model like this http://java-sl.com/envelope.html and leave only necessary rows.

like image 1
StanislavL Avatar answered Nov 14 '22 21:11

StanislavL