作者mrker (ꬮ....)
看板java
标题Re: [问题] 如何同步两个JTable的JTableHeader
时间Mon Dec 9 11:25:59 2013
抱歉... 小弟又有问题了...
承之前的描述 我最後是使用
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