【问题标题】:How to synchronize row header JTable scrolling with another table using keyboard arrow keys如何使用键盘箭头键将行标题 JTable 滚动与另一个表同步
【发布时间】:2015-01-08 17:40:51
【问题描述】:

在一个组件类中,我有 2 个 JTable,一个是固定的行标题表,另一个是包含行标题值的数据表。我为数据表设置了一个 JScrollPane,这样它可以同时滚动两个表。

在另一个类中,我有一个 JPanel,我添加了上面的组件类来显示。

在面板中,当我使用鼠标滚轮或单击滚动条滚动时,表格的滚动很好。但是,如果我选择行标题并按键盘上的向下或向上箭头键,我注意到只有行标题继续滚动,但数据表没有移动。因此,表格行不再正确对齐。

在另一个注释中,我注意到如果我选择数据表行并使用向上/向下箭头键滚动,两个表都能够同步正确滚动!

有人知道为什么会这样吗?如果选择了行标题表,我该如何解决滚动问题?

【问题讨论】:

    标签: java swing jtable jpanel jscrollpane


    【解决方案1】:

    查看Fixed Column Table

    那里的逻辑使用ChangeListener 将行标题的滚动与滚动窗格的垂直滚动条同步。

    基本代码是:

    scrollPane.getRowHeader().addChangeListener( this );
    

    和听众:

    public void stateChanged(ChangeEvent e)
    {
        //  Sync the scroll pane scrollbar with the row header
    
        JViewport viewport = (JViewport) e.getSource();
        scrollPane.getVerticalScrollBar().setValue(viewport.getViewPosition().y);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 2012-02-06
      • 2010-11-11
      相关资源
      最近更新 更多