作者mrker (ꬮ....)
看板java
标题Re: [问题] 如何同步两个JTable的JTableHeader
时间Fri Dec 6 08:43:21 2013
先感谢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