同时滚动2个表格?

时间:2014-02-13 14:55:07

标签: java scroll jtable

我正在尝试同时滚动两个Jtables。每个JTable都放在一个JScrollpane上,两个JScrollpane都放在一个JSplitpane上。这里是滚动的相关代码:

teststepScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
        rerouteScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        teststepScrollPane.getVerticalScrollBar().setModel(
                rerouteScrollPane.getVerticalScrollBar().getModel());

........

public void setTeststepTableFocus(final int teststep) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                if (teststep <= teststepTable.getModel().getRowCount() - 1){
                    teststepTable.setRowSelectionInterval(teststep, teststep);
                    teststepTable.scrollRectToVisible(new Rectangle(teststepTable.getCellRect(teststep, 0, true)));
                }
            }
        });
    }

可悲的是,它根本不起作用。有任何想法吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

以下是我要做的事情:

步骤1:访问面板的滚动条:

JScrollBar verticalBar1 = teststepScrollPane.getVerticalScrollBar();
JScrollBar verticalBar2 = rerouteScrollPane.getVerticalScrollBar();

第2步:将AdjustmentListeners添加到两个ScrollBars:

verticalBar1.addAdjustmentListener(
    new AdjustmentListener(){
    void adjustmentValueChanged(AdjustmentEvent e){
         //Change the scrollposition of the other bar here using the values
         from the adjustmentEvent 
    }
});

对第二个滚动条执行相同操作,但更改第一个滚动条的滚动位置。

这基本上是您将侦听器添加到滚动条。无论何时滚动它们,都会收到AdjustementEvent,告诉您滚动值是递增还是递减。

这只是解决问题的一般想法。不幸的是,我现在无法编写真正的工作代码。我希望它有所帮助!

答案 1 :(得分:0)

我所做的,同时滚动两张桌子,我只是管理他们的selectionModel。因此,当您从第一个表中选择任何行时,在第二个表中选择相同的行索引。

假设有两个表,例如tabletable1。第一个表格(table)位于名为scrollPane的第一个scroll上,第二个表格table1位于名为scrollPane的第二个scroll1上。

只需将第二个表格的selectionModel设置为第一个表格的selectionModel,将scrollPane的相同内容设置为:{/ p>

table.setSelectionModel(table1.getSelectionModel());
scroll.getVerticalScrollBar().setModel(scroll1.getVerticalScrollBar().getModel());

有用的链接

How to Use Tables