2013-07-22 68 views
0

默認情況下,如果您在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 ] 
[  |  |   |  |   ] 

我不知道什麼是你是否認爲這是一個好辦法沒有?

回答

1
  • 需要重寫SortKeys,每列,每個列的應該是自己的arrays of SortKeys(確保如果需要的話)

  • 有講理的使用max 6-8 SortKeys可見矩形收益由JViewport ,otheriwse我可以重畫

  • SortOrder.UNSORTED看到裏面JScrollPane性能問題和鬼魂不是初始排序順序,JTables視圖不能存儲,記住這一點,不知道正確的WA Y,只刷新JTablemodel

  • for example

  • 可以顯示某種編程圖標

+0

回答你的第一個問題 - 不一定。我可以簡單地修改現有的並改變順序。刪除主要的一個,然後添加一個新的(在最後一個例子中,我通常最多有3個SortKeys,這個例子並不新鮮 - 在那裏,在很多項目中都做過很多次)。反正願意幫忙。 :) – DejanLekic

+0

不知道你的目標是什麼,看看這裏[Multisort Table Header Cell Renderer](http://tips4java.wordpress.com/2010/08/29/multisort-table-header-cell-renderer/) – mKorbel

+0

是不是從上面的簡單例子中可以明顯看出? :)好的,讓我試着用你給出的最新例子來解釋 - 從文章http://tips4java.wordpress.com/2010/08/29/multisort-table-header-cell-renderer/運行應用程序並設置SortKeys的最大數量爲3,然後單擊尚未排序的列。你會看到該列獲得了PRIMARY SortKey - 我不想那麼做! :)之後,檢查我的ASCII示例,並看看我希望它的行爲。 :D – DejanLekic

相關問題