作者mrker (ꬮ....)
看板java
標題Re: [問題] 如何同步兩個JTable的JTableHeader
時間Tue Dec 3 19:38:38 2013
※ 引述《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
→ sbrhsieh:要讓 column 寬度可用滑鼠任意調整要關掉auto resize 12/04 00:54
→ sbrhsieh:aTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 12/04 00:59
推 dream1124:sb真的又強又熱心 12/04 01:00
→ sbrhsieh:這樣子就不會調整寬度後,table又自行去調整而怪怪的( 12/04 01:00
→ sbrhsieh:我被斷了 :p 12/04 01:02
→ sbrhsieh:使用同一個 column model 後,不必自己作同步 column wid 12/04 01:04
→ sbrhsieh:因為column width是column model 所管理 12/04 01:06
→ mrker:XS大太強了!Swing我真的苦手,又多又雜,明天來試試!感恩 12/04 01:38
→ sbrhsieh:避免誤會,syncTableHeader只需作一次,不需有調整就作 12/04 01:59
→ mrker:test fine 感謝sb大熱心的指導 謝謝!! 12/06 08:38