Re: [問題] 如何同步兩個JTable的JTableHeader
先感謝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
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章