Для тех, кто имеет опыт работы с JavaFX, я создал холст внутри моего конструктора сцены, но когда я на самом деле пытаюсь получить доступ к указанному холсту, он пуст, я не уверен, почему, поскольку я знаю, что он сделан внутри моего конструктора сцен и отображается вМой файл FXML Я отправил код на github, его можно найти здесь, если кто-нибудь захочет посмотреть, не ошибся ли я: https://github.com/ProSavage/JavaFXCalculator/tree/master/src/application/grapher Не стесняйтесь давать любые другие советы!
Вот соответствующий код
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0"
xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="application.grapher.GrapherController">
<children>
<HBox alignment="CENTER" layoutX="4.0" layoutY="280.0" prefHeight="20.0"
prefWidth="593.0">
<children>
<TextArea prefHeight="37.0" prefWidth="569.0" />
</children>
</HBox>
<Button layoutX="238.0" layoutY="336.0" mnemonicParsing="false"
prefHeight="50.0" prefWidth="125.0" text="Graph" />
<HBox fx:id="canvasBox" layoutX="14.0" layoutY="20.0"
prefHeight="250.0" prefWidth="570.0" />
</children>
</AnchorPane>
Класс
public class GrapherController {
@FXML
private HBox canvasBox;
public void test() {
Canvas canvas = new Canvas(570,250);
canvasBox.getChildren().add(canvas);
double startX = canvas.getWidth()/2 * -1;
double endX = startX * -1;
double startY = canvas.getHeight()/2 * -1;
double endY = startY * -1;
GraphicsContext grapher = canvas.getGraphicsContext2D();
grapher.beginPath();
String equation = "x+1";
grapher.moveTo(startX,Evaluator.eval(equation.replace("x",startX + "")));
for (double i = startX; i < endX; i++) {
grapher.lineTo(startX,Evaluator.eval(equation.replace("x",String.valueOf(i))));
}
}
}
В основном при запуске метода теста, если я создаю холст и добавляю его в поле, холстnull, и если я попытаюсь сделать это в самом файле xml, он все равно будет пустым.Я чувствую, что есть какой-то важный шаг, который я пропускаю самому холсту.