如何使用键盘箭头键将行标题JTable滚动与另一个表同步

时间:2015-01-08 17:40:52

标签: java swing jtable jpanel jscrollpane

在组件类中,我有2个JTable,一个是固定的行头表,另一个是携带行头的值的数据表。我为数据表设置了一个JScrollPane,它将同时为两个表滚动。

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

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

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

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

1 个答案:

答案 0 :(得分: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);
}