我有多个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。
答案 0 :(得分:3)
scrollPaneView.setAutoScrolls(true)以及滚动到可见代码应该可以正常工作。
有关详细信息,请参阅JComponent#setAutoscrolls javadoc。