Как сделать видимыми переменные из одного метода (полученные при событии в приложении JavaFX) в другом методе? ⇐ JAVA
-
Гость
Как сделать видимыми переменные из одного метода (полученные при событии в приложении JavaFX) в другом методе?
Я учусь, и мне нужна помощь с программой, над которой я работаю. Программа для построения введенной функции. При нажатии на кнопку строится график. При перетаскивании точки (из ряда точек, соединенных линией, образующей график функции), на графике должно произойти изменение поля введенной функции. Перетаскивание точек реализовано с помощью технологии drag-n-drop. Далее содержимое коллекции записывается в два массива.
Как сделать переменные из одного метода (makeDraggable) видимыми в другом методе (plotterFunction), в котором при обходе списка используется цикл while? В коде методаplotterFunction есть листитератор для работы с коллекцией данных. Ниже приведена часть кода, с которой проблемы. Программа использует подключенную библиотеку javaluator.
int я = 0; частная пустота makeDraggable (узел узла) { node.setOnMousePressed(событие -> { startX = event.getSceneX() - node.getTranslateX(); startY = event.getSceneY() - node.getTranslateY(); System.out.println("х " + startX + "," + "у " + startY); }); node.setOnMouseDragged(event -> { node.setTranslateX(event.getSceneX() - startX); node.setTranslateY(event.getSceneY() - startY); }); node.setOnMouseReleased(событие -> { FinishX = event.getSceneX(); FinishY = event.getSceneY(); XYChart.Data dataPointFinish = новый XYChart.Data(finishX, FinishY); System.out.println("х " + FinishX + "," + "у " + FinishY); }); } ListIterator listIterator = series.getData().listIterator(); в то время как (listIterator.hasNext()) { dataPoint = listIterator.next(); Узел node = dataPoint.getNode(); makeDraggable (узел); node.setCursor(Курсор.РУКА); System.out.println(dataPoint); xValues = (double) (dataPoint.getXValue()); yValues = (double) (dataPoint.getYValue()); if ((xValues == startX) && (yValues == startY)) { индексX = я; } //series.getData().set(indexX, dataPointFinish);//NullPointerException System.out.println(indexX); System.out.println(dataPointFinish);//Null System.out.println(xValues); System.out.println(yValues); я++; } Ниже приведены сообщения из консоли. Введена функция x^2, введены значения минимального и максимального аргументов 0 и 5 соответственно. Количество точек для построения графика — 10.
Серия[x^2] Данные[0.0,0.0,ноль] 0 нулевой 0,0 0,0 Данные[0.5,0.25,ноль] 0 нулевой 0,5 0,25 Данные[1.0,1.0,ноль] 0 нулевой 1.0 1.0 Данные[1.5,2.25,ноль] 0 нулевой 1,5 2,25 Данные[2.0,4.0,ноль] 0 нулевой 2.0 4.0 Данные[2.5,6.25,ноль] 0 нулевой 2,5 6.25 Данные[3.0,9.0,ноль] 0 нулевой 3.0 9,0 Данные[3.5,12.25,ноль]
Я учусь, и мне нужна помощь с программой, над которой я работаю. Программа для построения введенной функции. При нажатии на кнопку строится график. При перетаскивании точки (из ряда точек, соединенных линией, образующей график функции), на графике должно произойти изменение поля введенной функции. Перетаскивание точек реализовано с помощью технологии drag-n-drop. Далее содержимое коллекции записывается в два массива.
Как сделать переменные из одного метода (makeDraggable) видимыми в другом методе (plotterFunction), в котором при обходе списка используется цикл while? В коде методаplotterFunction есть листитератор для работы с коллекцией данных. Ниже приведена часть кода, с которой проблемы. Программа использует подключенную библиотеку javaluator.
int я = 0; частная пустота makeDraggable (узел узла) { node.setOnMousePressed(событие -> { startX = event.getSceneX() - node.getTranslateX(); startY = event.getSceneY() - node.getTranslateY(); System.out.println("х " + startX + "," + "у " + startY); }); node.setOnMouseDragged(event -> { node.setTranslateX(event.getSceneX() - startX); node.setTranslateY(event.getSceneY() - startY); }); node.setOnMouseReleased(событие -> { FinishX = event.getSceneX(); FinishY = event.getSceneY(); XYChart.Data dataPointFinish = новый XYChart.Data(finishX, FinishY); System.out.println("х " + FinishX + "," + "у " + FinishY); }); } ListIterator listIterator = series.getData().listIterator(); в то время как (listIterator.hasNext()) { dataPoint = listIterator.next(); Узел node = dataPoint.getNode(); makeDraggable (узел); node.setCursor(Курсор.РУКА); System.out.println(dataPoint); xValues = (double) (dataPoint.getXValue()); yValues = (double) (dataPoint.getYValue()); if ((xValues == startX) && (yValues == startY)) { индексX = я; } //series.getData().set(indexX, dataPointFinish);//NullPointerException System.out.println(indexX); System.out.println(dataPointFinish);//Null System.out.println(xValues); System.out.println(yValues); я++; } Ниже приведены сообщения из консоли. Введена функция x^2, введены значения минимального и максимального аргументов 0 и 5 соответственно. Количество точек для построения графика — 10.
Серия[x^2] Данные[0.0,0.0,ноль] 0 нулевой 0,0 0,0 Данные[0.5,0.25,ноль] 0 нулевой 0,5 0,25 Данные[1.0,1.0,ноль] 0 нулевой 1.0 1.0 Данные[1.5,2.25,ноль] 0 нулевой 1,5 2,25 Данные[2.0,4.0,ноль] 0 нулевой 2.0 4.0 Данные[2.5,6.25,ноль] 0 нулевой 2,5 6.25 Данные[3.0,9.0,ноль] 0 нулевой 3.0 9,0 Данные[3.5,12.25,ноль]
Мобильная версия