在拖动JScrollPane上的JLabel时滚动JScrollPane

时间:2012-03-09 02:11:42

标签: java swing scroll jscrollpane jlabel

我有多个JPanel放在JScrollPane上。现在我有它,所以如果你的鼠标在框架之外,那么它将不会拖动JPanels。

我需要在向一个方向移动组件时滚动它。 (例如,如果我抓住组件然后向右移动到屏幕边缘,组件应该移动,JScrollPane应该同时滚动)。基本上两个都应该在我拖动时可见,而JScrollPane是(自动滚动?)

int dX,dY;
public void mousePressed(MouseEvent e)
{
    dX = e.getLocationOnScreen().x - this.getX();
    dY = e.getLocationOnScreen().y - this.getY();
}
public void mouseDragged(MouseEvent e) 
{
    this.scrollRectToVisible(getVisibleRect());
    this.setLocation(e.getLocationOnScreen().x - dX, e.getLocationOnScreen().y - dY);
    dX = e.getLocationOnScreen().x - this.getX();
    dY = e.getLocationOnScreen().y - this.getY();
}

这就是拖动的代码。屏幕(它是一个变量)是一个JPanel,它被发送到包含在JFrame中的JScrollPane。

1 个答案:

答案 0 :(得分:3)

scrollPaneView.setAutoScrolls(true)以及滚动到可见代码应该可以正常工作。

有关详细信息,请参阅JComponent#setAutoscrolls javadoc。