2014-09-19 22 views
0

我的JTable與ListSelectionModel.MULTIPLE_INTERVAL_SELECTION:如何取消選擇JTable中的一行?

table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 

當我使用CTRL +鼠標單擊,選擇行和所有是正確的。但是,如果我只想取消選擇一個選定的行並按下CTRL +鼠標單擊一個選定的行,則將取消選擇所有行,而不僅僅是一個。然後,如果我按CTRL +鼠標再次單擊某行,previouse行又被選中,但沒有行,我想取消選擇。 我想用CTRL +鼠標單擊取消選擇只有一行。我怎樣才能做到這一點?

編輯: 我有這個在我的代碼:

table.getColumnModel().setColumnSelectionAllowed(true); 

我發現,如果我刪除此行,然後一切工作正常。但是,儘管'ColumnSelectionAllowed'爲true,JTable能否正常工作呢?

+4

這不是JTable應該如何工作。你有更多的代碼可以展示嗎?這種行爲是錯誤的。 – 2014-09-19 07:32:07

+1

考慮提供一個[可運行的示例](https://stackoverflow.com/help/mcve),它演示了您的問題。這會減少混淆和更好的反應 – MadProgrammer 2014-09-19 07:33:38

回答

0

嘗試方法clearSelection關於JTable

它的工作原理,通過調用clearSelection on the ListSelectionModel

0

如果是從許多尋求取消選擇一行,使用下面的代碼:

table.getSelectionModel().removeSelectionInterval(rowFrom, rowTo); 

爲取消一行:

table.getSelectionModel().removeSelectionInterval(row, row); 

可以使用像這樣的多重選擇

table.getSelectionModel().removeSelectionInterval(1, 3); //1,2,3 starting from 0 
table.getSelectionModel().removeSelectionInterval(5, 5); //5 

將其添加回,使用方法:

table.getSelectionModel().addSelectionInterval(rowFrom, rowTo); 

您可以使用多個選擇這樣

table.getSelectionModel().addSelectionInterval(1, 2); //1,2 
table.getSelectionModel().addSelectionInterval(4, 4); //4 

將其設置爲特定的範圍,這將首先清除舊的選擇,

table.getSelectionModel().addSelectionInterval(rowFrom, rowTo); 

它等於:

table.clearSelection(); 
table.getSelectionModel().addSelectionInterval(rowFrom, rowTo);