2015-07-18 65 views
0

通過JTable的API細算我沒有看到這事,但我真的不知道要尋找什麼,反正看看這張照片:如何禁用或設置最後選定的JTable元素?

Single Selected Cell

如何看「失敗「狀態欄中有一個藍色輪廓,表示當用戶停止拖動時它是最近選擇的/鼠標懸停在它上面。我想要麼能夠:1)不允許JTable擁有一個最後選定的元素,或者2)能夠自己設置它。我怎麼做?

如果有幫助,我想要其中之一的原因是我正在刷新表格,這意味着我需要重新應用選定的行,但是當我這樣做時,最後選定的元素會丟失。

編輯︰我實際上真的不會讓JTable有一個「鉛選擇索引」,因爲它被稱爲,我該怎麼做?

+0

未經測試,我會建議在在看看['setCellSelectionEnabled'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html#setCellSelectionEnabled(boolean)) – MadProgrammer

+0

我試過了,不起作用。謝謝你 – danglingPointer

+0

沒有提供你自己的'TableCellRenderer'作爲顯示[這裏]似乎沒有這樣做這個(http://stackoverflow.com/questions/18801137/java-jtable-disable-single-cell-selection -border-highlight) – MadProgrammer

回答

0

該單元格表示該小區已經集中通過以下方法所示:

int row = table.getSelectedRow(); 
int column = table.getSelectedColumn(); 

我想要麼可以設置它自己

您可以設置所選單元格和選定的行如下:

table.changeSelection(6, 2, false, false); 
ListSelectionModel lsm = table.getSelectionModel(); 
lsm.setSelectionInterval(3, 6); 

ListSelectionModel lsm = table.getSelectionModel(); 
lsm.setSelectionInterval(3, 6); 
table.changeSelection(6, 2, false, true); 

編輯:

看樣子你需要從適當的選擇模型得到行/列:

int row = table.getSelectionModel().getLeadSelectionIndex(); 
int column = table.getColumnModel().getSelectionModel().getLeadSelectionIndex(); 
+0

因此,它會重新應用最近選定的元素,但是對於不正確的行和列。 table.getSelectedRow()和table.getSelectedColumn()沒有返回_most recent_選擇的行和列,它們似乎要麼返回兩者中的第一個,要麼任意返回所選行和列中的一個。 – danglingPointer

+0

@danglingPointer,糟糕,它看起來像那些方法返回第一個選定的單元格,而不是最後選擇的單元格 - 這實際上是API所說的:)。請參閱編輯。 – camickr

相關問題