2014-07-16 36 views
-1
public void newFilter() { 
    RowFilter<ListTable, Object> rf = null; 
    //If current expression doesn't parse, don't update. 
    try { 
     rf = RowFilter.regexFilter(filterText.getText(), 0); 
    } catch (java.util.regex.PatternSyntaxException e) { 
     return; 
    } 
    sorter.setRowFilter(rf); 

} 

我使用的是從http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting 該過濾器,但該過濾器似乎只能在我的桌子過濾INT組件(除了第一個山坳,所有其他人都是字符串)。我只是想創建一個Filter來保留輸入文本的任何一行。我對這門語言比較陌生,非常感謝您的幫助!過濾中的Java Swing表

http://imgur.com/vGhiILG,BAheRHx,FFl0rSS 這裏是3圖片

+0

http://stackoverflow.com/questions/1107911/how-can-i-filter你讀過這個嗎? –

+1

爲了更快地獲得更好的幫助,請發佈[MCVE](http://www.stackoverflow/mcve)(最小,完整,可驗證示例)。 –

+0

等待,所以你的問題是過濾器只適用於第一列? – Ordous

回答

2

你的過濾器被明確地施加到列零,第一列。如圖所示here,可以通過省略indices參數包括所有列:

rf = RowFilter.regexFilter(filterText.getText()); 

或者,也可以包括指定的列,例如第一列至第三列:

rf = RowFilter.regexFilter(filterText.getText(), 1, 2, 3); 

組合過濾器的相關示例見here

附錄:在有益的意見,@Ordous提醒我,正確的用法系於varargs功能,新的Java中5

+0

非常感謝! 我顯然不明白使用過濾器的好處。 – qkhanhpro

+0

我會給一個+1,因爲答案是正確的,但我真的不喜歡通過引用已經使用的方法*上的Javadoc可以解決的問題... OP: – Ordous

+0

@Ordous:我傾向於同意,但當功能對我而言是新功能時,我也清楚記得[varargs](http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html)的絆腳石。 – trashgod