Как передать значение координат xy другому методу в другом классе в javafx

У меня есть панель с прослушивателем событий setOnMouseMoved для получения координат мыши, когда мышь перемещается по этой панели.

// getting mouse coordinates
private void setMouseMoved() {

    setOnMouseMoved((MouseEvent event) -> {

        double x = event.getX();
        double y = event.getY();

    });
}

Есть ли способ напрямую передать значения x и y другому методу в другом классе? или создать метод для возврата их как двойников в этом классе, а затем перейти к другому методу в другом классе?


person George Wang    schedule 02.04.2018    source источник
comment
Сохраните ссылку на класс, который вы хотели бы передать, чтобы вызвать метод из этого класса.   -  person SteelToe    schedule 02.04.2018
comment
Я могу передать метод, но не могу вернуть значение, так как оно находится в прослушивателе. Любые советы о том, как вернуть значение? Можете ли вы предоставить и пример? Спасибо   -  person George Wang    schedule 02.04.2018
comment
Что значит вернуть значение?   -  person SteelToe    schedule 02.04.2018
comment
вернуть x и y, чтобы я мог использовать его в других методах   -  person George Wang    schedule 02.04.2018
comment
не возвращайте его, просто вызовите метод и передайте x и y в качестве параметров   -  person SteelToe    schedule 02.04.2018
comment
Понятно! Спасибо!   -  person George Wang    schedule 02.04.2018


Ответы (1)


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

Вот пример.

Скажем, у нас есть класс DoSomething, который содержит метод doSomethingWithXandY, который вы хотели бы вызывать из события перемещения мыши.

Поэтому создайте класс с методом, который принимает x и y в качестве параметров, например:

     public class DoSomething{
     public void doSomethingWithXandY(double x,double y)
     {
      //put your code here that uses x and y
      System.out.println("x is " + x + " y is " + y);
     }
     }

Теперь в событии перемещения мыши вызовите этот метод из ссылки на класс следующим образом:

        setOnMouseMoved((MouseEvent event) -> {

    double x = event.getX();
    double y = event.getY();
    //create a instance of the class or use an existing one
    DoSomething something = new DoSomething();
    //now call this method
    something.doSomethingWithXandY(x,y);
});
person SteelToe    schedule 02.04.2018
comment
@GeorgeWang Я обновил свой ответ выше, пожалуйста, посмотрите, и если он правильный, проголосуйте и отметьте его как ответ. Спасибо! - person SteelToe; 04.04.2018