Прокрутите JScrollPane, перетаскивая JLabel, который находится на этой JScrollPane - PullRequest
2 голосов
/ 09 марта 2012

У меня есть несколько JPanels, помещенных в 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, который отправляется на JScrollPane, который содержится в JFrame.

1 Ответ

3 голосов
/ 09 марта 2012

scrollPaneView.setAutoScrolls (true) вместе с вашим кодом прокрутки до видимого должно работать.

См. JComponent # setAutoscrolls javadoc для получения дополнительной информации.

...