Re: [問題] JTable的排序與上色
※ 引述《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
10/17 21:14, 2F
→
10/17 21:15, , 3F
10/17 21:15, 3F
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章