Re: [問題] JTable的排序與上色

看板java作者 (再努力一點)時間11年前 (2013/10/17 17:31), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串3/8 (看更多)
※ 引述《sbrhsieh (十年一夢)》之銘言: : ※ 引述《prjryu (再努力一點)》之銘言: : : 我希望得到一個JTable 它可以排序並將非預期的數字以不同的底色標出 : : 我先是用getTableCellRendererComponent做出了標出非預期的數字cell的底色的功能, : : 然後使用RowSorter做排序的功能, : : 發現它的排序方式是把cell的內容當obj排序的,並非預期的遞增或遞減排序 : : ( ex: 排序 1, 100, 11 : : 預期結果: 1, 11, 100 : : 執行結果: 1, 100, 11 : : ) : : 為了解決這個問題,我將addRow()陣列裡數字的Object都改成double的型態, : : 這樣就可以正確顯示數字的排序結果了。 : : 但是前面寫的標出底色的功能卻失效了, : : 不知道為什麼table在重畫cell的時候, : : 原本obj型態的cell會呼叫自己寫的getTableCellRendererComponent且正常上色, : : 而後來改成double型態的cell卻不會呼叫我自己寫的getTableCellRendererComponent, : : 這是我的問題所在,這導致我無法正確的為cell上色... : : 請指教是否我的用法有錯、有什麼其他方法可以解決嗎? : 老實說這樣的資訊是看不出來你哪邊寫錯。 : 不過用猜的,會不會是你把資料從 string 改成 double 後,你的 table cell : renderer 的 code 忘了作對應的改變? : 補: : 若你不是針對 table column 去設定 cell renderer 而是從 table 本身去設定 : default cell renderer,那麼 column data 型態變更後,你設定 default cell : renderer 時指定的型別也要跟著改(除非你指定 Object 但會影響其他的 column)。 下面綠色的部份是我所說改變的地方,對table而言我insert的row仍然是obj陣列, 但我不懂是否是您所說的需要跟著改default cell renderer的情況。 如果需要更動的話應該如何更動呢? 我的default cell renderer會去取table裡cell的值計算判斷是否染色, 現在遇到的問題是, 那個被我以double形態轉成obj型態insert入table的cell不會染色 這種cell重畫的時候沒有call到我所set的DefaultRenderer...orz strData = BufferedStream.readLine(); StringTokenizer st = new StringTokenizer(strData, "\t"); st = new StringTokenizer(strData, "\t"); tokens = new Object[15]; for( i=0, j=st.countTokens(); i < j; i++) { jLabel1.setText("token: "+j); if( i > 2 ) { //放<double>後table才能正確排序,但DefaultTableCellRenderer無法正確上色 tokens[i] = Double.parseDouble( st.nextToken() ); //原:tokens[i] = st.nextToken();//放<obj>後table才能正確上色,但無法正確排序 } else { tokens[i] = st.nextToken(); } } defaultTableModel.addRow(tokens); -- HEY~~~HEY~~~CHAAAAARLIE~!   。。。。。 ⊙ . ▼▼▼▼ \▲▲▲▲ φ . \ . δ ./ㄨ \\/ˊ▄▄ \|/ㄑ ( ︶ ˋ\///\/. by Armour@joke -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.192.238

10/17 20:20, , 1F
若是再載入資料之前先排序好呢?
10/17 20:20, 1F

10/17 21:14, , 2F
RowSorter有排序規則吧? 實作comparable之類的界面看看?
10/17 21:14, 2F

10/17 21:15, , 3F
查一下RowSorter的排序規則,讓塞進去的物件實作那規則
10/17 21:15, 3F
文章代碼(AID): #1INwwA1i (java)
討論串 (同標題文章)
文章代碼(AID): #1INwwA1i (java)