Re: [問題] 如何同步兩個JTable的JTableHeader
抱歉... 小弟又有問題了...
承之前的描述 我最後是使用
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
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章