这是我的问题。我有下面的代码。它的作用是当我在面板的边缘上拖动一个列时,我的面板会自动滚动。
然而,问题是,使用此功能,每次调整列宽时,面板也会滚动到顶部。
例如,我有1000行,我突出显示底部的第999行。当我调整列宽时,面板会滚动到顶部。如何使面板留在我所在的位置?
我希望我的表格水平自动滚动,但不能垂直。
table.getTableHeader().addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e)
{
Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1);
((JTableHeader)e.getSource()).scrollRectToVisible(r);
table.scrollRectToVisible(r);
}
});
答案 0 :(得分:0)
您正在通过以下声明重置JTable
的滚动条位置:
table.scrollRectToVisible(r);
此处矩形的x位置是正确的,因为它与JTableHeader
和JTable
相同。但两者的y位置应该不同。但您也使用JTableHeader
的y位置JTable
。
要使其正常工作,请获取JViewPort
使用的JScrollPane
的{{1}}位置。
将此y位置用于上述语句中使用的矩形。这应该可以纠正这个问题。