Как этот код показывает, что мышь щелкнула? - PullRequest
0 голосов
/ 21 июня 2020

Видел это где-то в StackOverflow. Просто хочу знать, как это работает ...

public void mouseClicked(MouseEvent e){

                int x = e.getX();
                int y = e.getY();
}

x и y - координаты и могут отображаться на экране с помощью JLabel, но имя метода - mouseClicked. Как java узнает, что была нажата мышь?

(Надеюсь, это имеет смысл) ...

Ответы [ 2 ]

4 голосов
/ 21 июня 2020

Метод mouseClicked равен вероятно из java.awt.event.MouseListener интерфейса (https://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseListener.html)

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

Вы можете прикрепить слушателя к элементам, которые его поддерживают. Например:

MouseListener listener = new MouseListener() { /* see example code below */ };
JLabel label = new JLabel("This is a clickable lable");
label.addMouseListener(listener);

См. Следующий ответ, чтобы получить дополнительную информацию и ссылки на чтение статей.

@ transformer - это пустая реализация MouseListener, которую вы должны создать в коде Java.

MouseListener listener = new MouseListener() {
    @Override
    public void mouseClicked(MouseEvent e) {
        // This is the method where you would get your callback
        // whenever somebody clicked on the view that has this listener
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
};
2 голосов
/ 21 июня 2020

Это обработчик событий. Чтобы он работал, он должен быть «прикреплен» к чему-то в интерфейсе (скорее всего, к кнопке, но это может быть и другой элемент пользовательского интерфейса).

Как именно это работает, зависит от того, какой пользовательский интерфейс framework, но поскольку это Java, я предполагаю, что это скорее всего AWT. Вы можете найти более подробную информацию в руководствах, например здесь .

Между прочим, насколько значимо имя, зависит от того, из какой UI-среды оно принадлежит. В Android, WPF и ASP. NET, например, имя обработчика событий теоретически может быть любым, в основном это просто вопрос соглашения (а не фактического требования), как вы это называете. (Очевидно, вы должны соответствовать названию). Однако, как указано в комментариях, в AWT это имя, вероятно, действительно важно из-за класса, который содержит его, реализующий интерфейс.

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