Friday 15 June 2012

java - How to colorize found symbols in JTable? -



java - How to colorize found symbols in JTable? -

i have method filter (multiple or not) info in jtable, here code:

public void filter() { if(main.is_loading) return; rowfilter<object, object> servicefilter = null; if (!multiple) { string filtertext = tfield.gettext(); if (filtertext.length() > 2) servicefilter = rowfilter.regexfilter("(?iu)" + filtertext); } else { list<rowfilter<object, object>> filters = new arraylist<rowfilter<object, object>>(2); (int = 0; < tfields.size(); i++) { string filtertext = ""; jtextfield cur = tfields.get(i); filtertext = cur.gettext(); if (cur.gettext().length() > 2) { filters.add(rowfilter.regexfilter("(?iu)" + filtertext, i)); } } servicefilter = rowfilter.andfilter(filters); } sorter.setrowfilter(servicefilter); table.setrowsorter(sorter); }

how alter color of found symbols? need mark matched symbols.

first filter table model find matched cells. matched cells forcefulness repaint cell view (if used abstracttablemodel phone call firetablecellupdated(int,int)). need improve cell renderer. when utilize text filter , cell text matched, display matched text other color.

class renderer extends defaulttablecellrenderer { @override public component gettablecellrenderercomponent(jtable table, object value, boolean isselected, boolean hasfocus, int row, int column) { if (isfilterused() && iscellmatched(row, column)) { string stringvalue = value.tostring(); string filter = getfiltervalue(); int start = stringvalue.indexof(filter); int end = start + filter.length(); string result = string.format("<html>%s<font color='red'>%s</font>%s</html>", stringvalue.substring(0, start), stringvalue.substring(start, end), stringvalue.substring(end)); homecoming super.gettablecellrenderercomponent(table, result, isselected, hasfocus, row, column); } else { homecoming super.gettablecellrenderercomponent(table, value, isselected, hasfocus, row, column); } } }

java swing jtable rowfilter

No comments:

Post a Comment