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

看板java作者 (ꬮ....)時間11年前 (2013/12/03 19:38), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串3/6 (看更多)
※ 引述《sbrhsieh (十年一夢)》之銘言: : ※ 引述《mrker (ꬮ....)》之銘言: : : Dears : : 最近小弟在同步兩個JTable的狀態 : : 會需要同步 : : 1. JTable外面是用JScrollPane包,所以必須同步垂直和水平的卷軸 (done) : : 2. JTableHeader每個column的寬度,讓兩個JTable永遠看起來是等寬的 (done) : : 3. JTable設定RecordingAllowed為true,可讓JTableHeader的column互相調換, : : 這部分的同步目前完全沒idea : : 望各位版上的高手們可以指點小弟一下 : : 謝謝!! : 可否說明同步兩個 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

12/04 00:54, , 1F
要讓 column 寬度可用滑鼠任意調整要關掉auto resize
12/04 00:54, 1F

12/04 00:59, , 2F
aTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
12/04 00:59, 2F

12/04 01:00, , 3F
sb真的又強又熱心
12/04 01:00, 3F

12/04 01:00, , 4F
這樣子就不會調整寬度後,table又自行去調整而怪怪的(
12/04 01:00, 4F

12/04 01:02, , 5F
我被斷了 :p
12/04 01:02, 5F

12/04 01:04, , 6F
使用同一個 column model 後,不必自己作同步 column wid
12/04 01:04, 6F

12/04 01:06, , 7F
因為column width是column model 所管理
12/04 01:06, 7F

12/04 01:38, , 8F
XS大太強了!Swing我真的苦手,又多又雜,明天來試試!感恩
12/04 01:38, 8F

12/04 01:59, , 9F
避免誤會,syncTableHeader只需作一次,不需有調整就作
12/04 01:59, 9F

12/06 08:38, , 10F
test fine 感謝sb大熱心的指導 謝謝!!
12/06 08:38, 10F
文章代碼(AID): #1IdSB15Q (java)
討論串 (同標題文章)
文章代碼(AID): #1IdSB15Q (java)