Swing Scrollable проблема - PullRequest
       2

Swing Scrollable проблема

0 голосов
/ 28 сентября 2010

У меня странная проблема с просмотром изображения JPEG с помощью интерфейса Java Swing Scrollable.

Мой код позволяет рисовать прямоугольник поверх изображения с помощью левой кнопки мыши. Все работает нормально, если я не касаюсь полос прокрутки.

Но как только я прокручиваю вниз, прямоугольник рисуется в другом месте. В основном, если я переместлю сверху вниз полосу прокрутки, изображение будет нарисовано с неправильной Y-координатой. Такое же поведение при прокрутке влево-вправо, изображение рисуется с неправильной x-координатой. Эти координаты x, y представляют верхнюю левую точку (x, y), чтобы начать рисование прямоугольника.

Так что после прокрутки вниз и щелчка левой кнопкой мыши на изображении, чтобы нарисовать прямоугольник с координатой y. Ниже приведено событие, которое я добавил на одну из панелей с изображением.

public void mousePressed(MouseEvent m) {
   if (SwingUtilities.isLeftMouseButton(m)) {
      ....
      int y = m.getY(); //This y-coordinate is off whenever I scroll down the image.
      ...
   }
}

Кто-нибудь знает, в чем может быть проблема? Я имею в виду, что я получаю y-координату от MouseEvent, поэтому я ожидаю, что она будет иметь правильное значение.

Спасибо.

1 Ответ

1 голос
/ 28 сентября 2010

Какие координаты вы ожидаете получить?Значения имеют смысл для меня: при прокрутке вниз координата y увеличивается, даже если вы щелкаете в том же месте на экране.

Компонент, находящийся в области прокрутки, ничего не знает оScrollPane.Поэтому, когда происходит щелчок, координата y совпадает с тем, где был бы щелчок, если бы компонент был достаточно большим, чтобы быть полностью видимым.

Если вы хотите преобразовать в систему координат области прокрутки, вы можете сделать что-нибудьвот так я думаю:

public void mouseClicked( MouseEvent e )
{
  Point p = SwingUtilities.convertPoint( label, e.getX(), e.getY(), scrollPane );
  System.out.println( "Converted: " + p.x + ", " + p.y );
}

(Edit: просто примечание, код выше предполагает, что label является компонентом, который отображает изображение)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...