Re: [問題] 如何同步兩個JTable的JTableHeader

看板java作者 (ꬮ....)時間11年前 (2013/12/09 11:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
抱歉... 小弟又有問題了... 承之前的描述 我最後是使用 table1.getTableHeader() .setColumnModel(table2.getTableHeader().getColumnModel()); 讓兩個JTable的ColumnModel為一致 但會造成一個情況 譬如說某個欄位(假設是性別),我希望做到 if ("MALE".equals(sex)) 欄位.setBackground(Color.BLUE); else if ("FEMALE".equals(sex)) 欄位.setBackground(Color.RED); 但問題來了,兩個JTable共用一個ColumnModel, 會致使兩邊cell的任何UI異動,都會同步 因此問題又回到原點了,必須在TableHeader上做處理 (因為對我的需求來說兩邊Header部分沒有差異) 可以...再麻煩 指點一下嗎? 謝謝 Orz ※ 引述《mrker (ꬮ....)》之銘言: : 先感謝sb大熱心的指導,還是PO一下實際的作法 : 首先我用 : table1.getTableHeader() : .setColumnModel(table2.getTableHeader().getColumnModel()); : 這會造成table2在header拖曳時,底下的資料欄位不會跟著移動, : 所以這部分我一開始就錯了,應該會是如下 : table1.setColumnModel(table2.getColumnModel()); : 這樣Header和底下的資料欄位才會同步 : ※ 引述《mrker (ꬮ....)》之銘言: : : 感謝s大的幫忙 : : 是的兩個JTable內顯示的數據和column都是相同的 : : 只是資料數據不同 (譬如一個是show男生的資料,另一個是show女生的資料) : : 我有試過s大的方法,如下 : : public static void syncTableHeader(final JTable table1, final JTable table2) { : : table1.getTableHeader() : : .setColumnModel(table2.getTableHeader().getColumnModel()); : : } : : 兩邊的ColumnModel可正常同步了,雖然拖曳的特效並不會一起顯示 : : 但是奇怪的是,TableHeader原本每個欄位的寬度都可以拖拉調整 (像是檔案總管這樣) : : 加上這個method,竟會造成 table1 拖曳困難,這倒是比較奇怪... : : 因為同步兩個ScrollPane的ScrollBar也是類似的方法, : : 但不會有其中一邊特別難拖曳... : : 補上同步ScrollBar的方法 : : public static void syncTwoScrollBar(JScrollPane scrollpane1, : : JScrollPane scrollpane2, : : Orientation orientation) { : : switch (orientation) { : : case VERTICAL: : : scrollpane1.getVerticalScrollBar().setModel( : : scrollpane2.getVerticalScrollBar().getModel()); : : break; : : case HORIZONTAL: : : scrollpane1.getHorizontalScrollBar().setModel( : : scrollpane2.getHorizontalScrollBar().getModel()); : : break; : : } : : } : : 懇請大家指點一下了,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.142.207
文章代碼(AID): #1IfJX9Eq (java)
討論串 (同標題文章)
文章代碼(AID): #1IfJX9Eq (java)