java 板


LINE

※ 引述《sbrhsieh (十年一夢)》之銘言: : 拼湊所有你提供的碼來看,有一些部分要釐清。 : 1) 你若使用 DefaultTableModel,這個 model 會把所有 column 都當作 Object : type的數據,當你為 Object type 設定 default cell renderer 後,所有的 : column 都會使用同一個 cell renderer 來繪製 cell 外觀。 : 但實際上放進 model 的數據中,某些 column 的部分是使用 String,某些 column : 是 Double,那麼你設計的 cell renderer(ColorTable) 必須能該處理這些不同的 : 數據型別才行。 : 2) ColorTable::getTableCellRendererComponent 一律試著把每個 cell 內的 : 數據轉成 String 後以 Double.parseDouble interpret 成 double 數值,在依值 : 來決定要顯示的顏色。 : 這個作法必須要放 String 數據的 column 裡的 cell value(String) 的內容都 : 是可以 parse 成 double 的(如 "10" 非 "abc")。 : 說起來非 Double 數據的 column 出錯機會比較高,但你的觀察顯示似乎是 Double : column 沒有使用 ColorTable 來做 rendering,有一種可能性在是你非直接使用 : DefaultTableModel 而是使用自己改寫過的 table model,你有 override : getColumnClass method,讓放置 Double 數值的 column(s) 傳回非 : Object.class,因為程式只為 Object type 設定 default cell renderer,所以 : 不是 Object type 的 column 就會使用 JTable 自己預設準備好的 renderer(為 : Object type column 設定 default renderer R,不代表沒有明確設定 default : renderer 的非 Object type column 都會使用 R,儘管 Object 是任一種 class : 的 base class)。 : 另外,建議在 getTableCellRendererComponent method 裡直接使用 value 這個 : parameter 帶進來的值,不需要再透過 row, col 值從 table or model 去取值, : 會比較不易出錯(table, model 都有 getValueAt method,但是兩者的參數 row : 與 col 的意義不一致)。 感謝您的回覆與建議, 您猜的沒錯,由於需要以數值排序的功能, 所以我override了getColumnClass method, 目的是為了當排序的column型態為double時可以正確以數值大小作為排序依據。 public Class<?> getColumnClass(int column) { Class<?> returnValue; if ((column >= 0) && (column < getColumnCount())) { if(getValueAt(0, column)!=null) { returnValue = getValueAt(0, column).getClass(); } else { returnValue = Object.class; } } else { returnValue = Object.class; } return returnValue; } 根據您的推論 我程式的問題是由於程式只為Object type設定default cell renderer,所以 不是 Object type 的 column 就會使用 JTable 預設準備好的 renderer。 就我的理解, 在此程式的問題在於沒有為Double type設定default cell renderer,所以 不是Double type的column就不會使用JTable我自己預設準備好的 renderer。 但DefaultTableCellRenderer中我只找到也只知道getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 這裡可以改寫cell的顏色設定, 請問若要在column為Double type的時候可以正確的使用我設定的default cell renderer,要如何去修改我的cell renderer(ColorTable) 呢? -- 郵差又來送羊奶了 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.192.238







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP