【问题标题】:Scroll JScrollPane while dragging a JLabel that is on that JScrollPane拖动 JScrollPane 上的 JLabel 时滚动 JScrollPane
【发布时间】:2012-03-09 02:11:42
【问题描述】:

我在一个 JScrollPane 上放置了多个 JPanel。现在我有它,这样如果你的鼠标在框架之外,它就不会拖​​动 JPanel。

当我向一个方向移动组件时,我需要让它滚动。 (例如,如果我抓住组件,然后一直向右移动到屏幕边缘,则组件应该移动并且 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。

【问题讨论】:

  • 请更详细地解释您的问题。假设我们对您的项目一无所知。
  • 对不起。试图清理一下。还不确定你是否明白。
  • 对不起,也许是我,但我仍然有太多未知数无法理解这个问题。考虑创建并发布sscce

标签: java swing scroll jscrollpane jlabel


【解决方案1】:

scrollPaneView.setAutoScrolls(true) 与滚动到可见的代码一起应该可以工作。

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

【讨论】:

  • +1 表示setAutoScrolls();另见ScrollAction
  • 在被拖动的标签或整个面板上设置自动滚动?
  • 取决于您安装鼠标监听器的组件。
猜你喜欢
  • 1970-01-01
  • 2011-12-21
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
相关资源
最近更新 更多