2012-03-09 8 views
2

У меня есть несколько JPanels, размещенных на JScrollPane. Прямо сейчас у меня это так, что если ваша мышь находится вне рамки, то она не будет перетаскивать JPanels.Прокрутка JScrollPane при перетаскивании JLabel, который находится на этом JScrollPane

Мне нужно прокрутить его, пока я перемещаю компонент в направлении. (например, если я захватил компонент, а затем переместился вправо до края экрана, компонент должен двигаться, а 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.

+0

Пожалуйста, объясните причину. Предположим, что мы ничего не знаем о вашем проекте. –

+0

извините. попытался немного разобраться. не уверен, если вы его получите. –

+2

Извините, возможно, это я, но для меня все еще есть слишком много неизвестных, чтобы понять проблему. Рассмотрите возможность создания и публикации [sscce] (http://sscce.org). –

ответ

3

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

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

+0

+1 для 'setAutoScrolls()'; см. также ['ScrollAction'] (http://stackoverflow.com/a/7203419/230513). – trashgod

+0

установить автопрокрутки на ярлык, который перетаскивается или на всю панель? –

+0

Зависит от того, какой компонент вы установили для прослушивания мыши. –

Смежные вопросы