默認情況下,如果您在JTable的行分類器中有多個SortKey,則每次單擊列標題時都會使該列的SortKey成爲主列。更改JTable多列排序行爲的最簡單方法是什麼?
我需要改變這種行爲,所以第一次點擊一個列標題會使該SortKey成爲主要的,另一個列標題的點擊會使該列的SortKey成爲次要的,依此類推。
此外,當達到maxSortKeys時,點擊另一個(未排序)列將觸發排序鍵的混洗。新點擊的列將具有最低優先級的SortKey,主鍵列將失去其SortKey,並且具有第二SortKey的列將成爲主鍵列等。
此刻,我實現了自己的TableHeader以便當用戶單擊列標題時捕獲事件以便適當地對SortKeys進行混洗。
爲了用一個例子說明吧:
[ One | Two ↑1 | Three ↓2 | Four | Five ↑3 ]
[ | | | | ]
用戶點擊後的第一個列標題:
[ One ↑3 | Two | Three ↓1 | Four | Five ↑2 ]
[ | | | | ]
我不知道什麼是你是否認爲這是一個好辦法沒有?
回答你的第一個問題 - 不一定。我可以簡單地修改現有的並改變順序。刪除主要的一個,然後添加一個新的(在最後一個例子中,我通常最多有3個SortKeys,這個例子並不新鮮 - 在那裏,在很多項目中都做過很多次)。反正願意幫忙。 :) – DejanLekic
不知道你的目標是什麼,看看這裏[Multisort Table Header Cell Renderer](http://tips4java.wordpress.com/2010/08/29/multisort-table-header-cell-renderer/) – mKorbel
是不是從上面的簡單例子中可以明顯看出? :)好的,讓我試着用你給出的最新例子來解釋 - 從文章http://tips4java.wordpress.com/2010/08/29/multisort-table-header-cell-renderer/運行應用程序並設置SortKeys的最大數量爲3,然後單擊尚未排序的列。你會看到該列獲得了PRIMARY SortKey - 我不想那麼做! :)之後,檢查我的ASCII示例,並看看我希望它的行爲。 :D – DejanLekic