#java #swing
#java #swing
Вопрос:
У меня есть JTable
с определенным количеством столбцов (все строки). Я хотел бы реализовать фильтр, который показывает только строки, в которых column2 и column3 содержат одну и ту же строку. Возможно ли это? Я пытался использовать регулярное выражение, но я не вижу способа сравнить значения ячеек таблицы.
Ответ №1:
просто реализуйте RowFilter напрямую:
RowFilter filter = new RowFilter<Object, Integer>() {
@Override
public boolean include(Entry entry) {
return entry.getValue(firstColumn).equals(entry.getValue(secondColumn));
}
}
(нулевые проверки и полные обобщения опущены)
Ответ №2:
Вы можете использовать RowFilter, который сравнивает данные в обоих столбцах друг с другом.
http://download.oracle.com/javase/6/docs/api/javax/swing/RowFilter.html
Ответ №3:
//col as int is in outer class. Pls note col is your column to specify.
//So if you want more columns use || and with another column say col2.
class Columnfilter extends RowFilter<Object, Integer>
{ String txt=null;
Columnfilter(String txt){
this.txt=txt;
}
void setText(String txt){
this.txt=txt;
}
@Override
public boolean include(Entry entry) {
if(txt==null)return false;
if(col==-1)return true;//for all
String colVal= entry.getStringValue(col);//chk column if value exist
int b= colVal.toLowerCase().indexOf(txt.toLowerCase());
if(b!=-1){
return true;
}else{
return false;
}
}}