Я пытаюсь адаптировать следующий пример: http://docs.oracle.com/javase/tutorial/uiswing/examples/zipfiles/components-ScrollDemoProject.zip
Цель, которую я хочу сделать, - , чтобы позволить пользователю перемещаться по изображению по координатам, которые они выбирают сами (но не мышью).Таким образом, у вас есть большое изображение, и отображается только небольшая часть, и это окно поверх изображения перемещается.Это работает при использовании мыши (см. Пример оракула).Но я хочу сделать это с координатами, которые выбирает пользователь.
В классе ScrollablePicture вы можете видеть, что можно перемещать изображение, перетаскивая мышь :
public void mouseDragged(MouseEvent e) {
Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1);
scrollRectToVisible(r);
}
Я пытался сделать то же самое, поэтому я добавил этот метод под функцией mouseDragged :
public void moveMap(float X, float Y){
Rectangle r = new Rectangle((int)X,(int) Y, 1, 1);
System.err.println("Scroll to "+ r.x);
scrollRectToVisible(r);
}
Когда я смотрю свой вывод, я могувидите, что я получаю координаты в методе.Но окно не прокручивается .Мой вопрос сейчас: Почему это не прокрутка и как я могу это исправить?
Ps: Это не имеет ничего общего со значениями.Потому что я пытался с фиксированными числами в обеих функциях, например:
Rectangle r = new Rectangle(2000,2000, 1, 1);
Это работало в функции mouseDragged, но не в функции moveMap