在组件类中,我有2个JTable,一个是固定的行头表,另一个是携带行头的值的数据表。我为数据表设置了一个JScrollPane,它将同时为两个表滚动。
在另一个类中,我有一个JPanel,我在上面添加组件类来显示。
在面板中,当我使用鼠标滚轮滚动或单击滚动条时,滚动表格很正常。但是,如果我选择行标题并按键盘上的向下或向上箭头键,我注意到只有行标题继续滚动,但数据表不会移动。因此,表行不再正确对齐。
在另一个注释中,我注意到如果我选择数据表行而使用向上/向下箭头键滚动,则两个表都能够同步正确滚动!
有人知道为什么会这样,如果选择行标题表,我怎么解决滚动问题?
答案 0 :(得分:1)
那里的逻辑使用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);
}