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

看板java作者 (ꬮ....)時間11年前 (2013/12/06 08:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
先感謝sb大熱心的指導,還是PO一下實際的作法 首先我用 table1.getTableHeader() .setColumnModel(table2.getTableHeader().getColumnModel()); 這會造成table2在header拖曳時,底下的資料欄位不會跟著移動, 所以這部分我一開始就錯了,應該會是如下 table1.setColumnModel(table2.getColumnModel()); 這樣Header和底下的資料欄位才會同步 ※ 引述《mrker (ꬮ....)》之銘言: : ※ 引述《sbrhsieh (十年一夢)》之銘言: : : 可否說明同步兩個 JTable 的意義與用途? : : 這兩個 JTable 內顯示的數據是否相同? : : 兩者的 column 在數量上、內容上是否相同? : : 假如說兩個 JTable 的 column 在意義上是完全相同的(除了 column 裡各 row : : 所承載的數據不同),那麼最簡單(正確)的做法是讓兩個 JTable 使用同一個 : : TableColumnModel,如此一來不需要額外去同步兩個 JTable 的各欄寬與欄的 : : 順序等等。 : 感謝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): #1IeHshBV (java)
討論串 (同標題文章)
文章代碼(AID): #1IeHshBV (java)