Вы работаете с java .awt.event.MouseEvent , верно?
Проблема в том, что вы вызываете методы на MouseEvent e
, которые не работают так, как ожидалось в вашем случае. Методы e.isMetaDown()
и e.isShiftDown()
проверяют, отключен ли модификатор Meta или Shift для этого события. Я думаю, вы ищете способ проверить, нажали ли вы левую ( MouseEvent.BUTTON1
) или правую кнопку мыши (MouseEvent.BUTTON3
). Вы можете проконсультироваться на этой странице:
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/event/MouseEvent.html
, чтобы проинформировать yoursef о методах, которые могут быть вызваны на MouseEvent
s.
You можно попробовать эти два небольших изменения. (Но этот код не протестирован !!) Если вы хотите, чтобы кто-то протестировал код, опубликуйте минимальный воспроизводимый пример, как уже упоминалось в @DontKnowMuchBut Getting Better.
class Mouse implements MouseListener {
/**
* Moves the ball to the (x, y) location where the mouse has been clicked
*/
public void mousePressed(MouseEvent e) {
ball.setX(e.getX());
ball.setY(e.getY());
if (e.getButton().equals(MouseEvent.BUTTON1)) {
ball.move(getX(), getY());
repaint();
}
if (e.getButton().equals(MouseEvent.BUTTON2)) {
ball.setRandomSpeed(20);
ball.setLocation(Math.random(), Math.random());
repaint();
}
}
}
Надеюсь, это полезно.