Я использую MouseInputListener (MouseListener + MouseMotionListener) для перетаскивания нескольких JLabel в JPanel.Вот схема того, что я делаю:
MouseClicked: проверьте, есть ли JLabel в области щелчка в JPanel;если да, выберите его (закрасьте в цвет и т. д.).Если нет, ничего не делайте.
MouseDragged: если выбран JLabel, установите расположение этого JLabel с помощью e.getX () и e.getY () события.Если ничего не выбрано, ничего не делать.
MouseReleased: Если выбрана JLabel, закрасьте его обратно в исходный цвет.Выберите ничего (возможно, ноль).Если нет, ничего не делайте.
Это все в JPanel;JPanel реализует MouseInputListener.
Итак, вот в чем проблема: когда начальная позиция JLabel равна 0,0, скажем, я перемещаю ее в 10,10.И после отпускания мыши и ничего не выбирается, когда я нажимаю на 0,0, он выбирает, что JLabel;однако он должен был выбрать его, если я нажму 10,10, потому что это его новая позиция.
Теперь я думаю, что это может быть потому, что я использую неправильные координаты;Я слышал, что значения координат в JPanel являются относительными, поэтому мне приходится каждый раз делать вычитание (то есть конечные начальные координаты), чтобы получить правильные координаты.Я сделал это, но это тоже не сработало.Другая возможность может состоять в том, что Java хранит все исторические координаты X и Y (так что каждый раз, когда я нажимаю на предыдущую координату, я выбираю этот объект), что является чисто воображением!
Каковы ваши предложения?
Заранее спасибо.