2016-04-27 91 views
0

我在應用程序中有2個複選框。 複選框相互獨立,即可以選擇一個複選框,也可以選擇兩個複選框,也可以不選擇任何一個。過濾表格模型

該複選框過濾表模型,表每10秒刷新一次。

每個刷新之前我得到每個複選框的狀態如下:已發生刷新

checkM = checkboxM.isSelected(); 
checkI = checkboxI.isSelected(); 

後,我再嘗試複選框設置爲它們是什麼如下:

checkboxM.setSelected(checkM); 
checkboxI.setSelected(checkI); 

然後這是我的if語句,以找出哪些框被選中,這是問題的出在哪裏,因爲我似乎無法解決如何應用過濾器a)選中兩個複選框,因此顯示所有行的內容「A 「和」B「b)選擇其中一個複選框ed s0只顯示「A」或「B」或沒有顯示行

if ((checkM = false) || (checkI = false)){ 
newFilter("",4); 
} 

else{ 
newFilter("A",4); 
newFilter("B",4); 


} 



//this is my filter 

private void newFilter(String x, Integer n) { 
sorterDG = new TableRowSorter (modelImbalanceTable); 
sorterDG.setRowFilter(RowFilter.regexFilter(x,n)); 
tableDG.setRowSorter(sorterDG); 
tableDG.tableChanged(new TableModelEvent(tableDG.getModel())) ; 
tableDG.repaint(); 
} 
+1

1)你形容的要求或規範,但是沒有提出任何問題。你的問題是什麼? 2)爲了更快地獲得更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 3)使用合乎邏輯的一致形式縮進代碼行和塊。縮進旨在使代碼的流程更易於遵循! –

回答

4

我並不真正遵循你的邏輯。但如果你的邏輯是正確的,你的問題只是一個簡單的錯字。您使用了=,您可能想使用===爲checkM和checkI分配新值,同時計算出設定值。 ==會比較值。除此之外,比較一個布爾值來得到一個布爾值並不是很有用。按原樣使用布爾值。

但是,這意味着您目前始終執行您的else路徑,並且永遠不會執行您的if路徑。在你的if路徑裏,你有你的下一個問題。您不累積過濾器,但您首先設置過濾器A,然後B。因此,在運行時,無論您檢查了什麼,您都將最終過濾B

你可能是指像

if (checkM && checkI) { 
    newFilter("A|B", 4); 
} else if (checkM) { 
    newFilter("A", 4); 
} else if (checkI) { 
    newFilter("B", 4); 
} else { 
    newFilter("", 4); 
} 
+0

@BjörnKautler。當我嘗試newFilter(「A」,4),然後繼續嘗試newFilter(「B」,4)時,問題似乎在於我的else語句。我想要說明用戶是否勾選了checkM或checkI,或者選擇了兩個或兩個都選中了。 – Ingram

+0

嗯,我告訴過你,你做得不對。您將始終按照我在答案中所述的方式進入其他路徑。此外,只要我理解你的代碼,你可能總是隻顯示「B」值,因爲你用'newFilter()'調用你的過濾器。 – Vampire

+0

你能幫忙嗎? – Ingram