Нет проблем с использованием mouseDragged
и mouseMoved
вместе. Они работают просто отлично. Проблема в том, что вы устанавливаете на theLabel
.
Проблема:
Проблема заключается в том, что когда вы устанавливаете местоположение theLabel
в методе mouseMoved
, theLabel
находится прямо под указателем мыши. Таким образом, вы не можете создать жест healthy mouseDrag , который должен произойти с вашим displayWindow
компонентом. Другими словами, ваш mouseDrag применяется к самому theLabel
, а не к displayWindow
, поскольку theLabel
расположен под указателем мыши в верхней части displayWindow
.
Как я узнал? Я просто использовал старый трюк! Я только что установил цвет фона на theLabel
:
myLabel.setBackground(Color.lightGray);
Это помогло мне увидеть, где находится myLabel
, поэтому проблема решена!
Решение:
Решение состоит в том, чтобы установить местоположение для theLabel
, которое не находится под указателем мыши. Это поможет запустить здоровую мышиную мышку с места мыши. Примерно так:
public void mouseDragged(MouseEvent e) {
System.out.println("Drag = " + e);
MouseX = e.getX() + 5; // <- note here
if (MouseX < 0) {
MouseX = 0;
}
MouseY = e.getY() - 15; // <- note here
if (MouseY < 0) {
MouseY = 0;
}
// move label to the new location
theLabel.setLocation(MouseX, MouseY);
theLabel.setForeground(Color.black);
String coordtextClick = MouseX + " , " + MouseY;
theLabel.setText(coordtextClick);
}// end mouseDragged()
public void mouseMoved(MouseEvent e) {
System.out.println("Move = " + e);
theLabel.setForeground(Color.red);
MouseX = e.getX() + 5; // <- note here
if (MouseX < 0) {
MouseX = 0;
}
MouseY = e.getY() - 15; // <- note here
if (MouseY < 0) {
MouseY = 0;
}
String coordtext = MouseX + " , " + MouseY;
theLabel.setLocation(MouseX, MouseY);
theLabel.setText(coordtext);
}//
Надеюсь, это поможет!