Итак, я сделал базовое приложение, которое обычно выглядит как ...
Но если я добавлю ссылку на компонент FXML TextFlow (fx: id = "tofl") в классе контроллера, графический интерфейс станет пустым, как ...
Пожалуйста, объясните, почему это происходит. Мой код выглядит следующим образом:
main.FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.TextFlow?>
<fx:root prefHeight="389.0" prefWidth="732.0" styleClass="grey" stylesheets="@CSS.css" type="AnchorPane" xmlns:fx="http://javafx.com/fxml">
<TextFlow fx:id="tofl" layoutX="14.0" layoutY="14.0" prefHeight="299.0" prefWidth="703.0" />
<Button fx:id="addBtn" layoutX="596.0" layoutY="320.0" mnemonicParsing="false" text="Add new Text block" />
<TextField fx:id="txt" layoutX="14.0" layoutY="320.0" prefHeight="25.0" prefWidth="572.0" />
<CheckBox fx:id="italic" layoutX="14.0" layoutY="360.0" mnemonicParsing="false" styleClass="chckbox" text="Italic" />
<CheckBox fx:id="bold" layoutX="104.0" layoutY="360.0" mnemonicParsing="false" text="Bold" />
<CheckBox fx:id="underline" layoutX="180.0" layoutY="360.0" mnemonicParsing="false" text="Underline" />
<ChoiceBox fx:id="color" layoutX="270.0" layoutY="356.0" prefHeight="25.0" prefWidth="121.0" />
<ChoiceBox fx:id="size" layoutX="399.0" layoutY="356.0" prefHeight="25.0" prefWidth="121.0" />
</fx:root>
mainController.java
package textflow;
import java.io.IOException;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
public class mainController extends AnchorPane {
@FXML TextFlow tofl; //Problem here. If this line exists, the GUI is blank white. If I remove it, the GUI shows up. The program doesn't throw ANY errors, so it might just be a bug (either in NetBeans, or my head)
@FXML TextField txt;
@FXML Button addBtn;
@FXML CheckBox italic;
@FXML CheckBox bold;
@FXML CheckBox underline;
@FXML ChoiceBox color;
@FXML ChoiceBox size;
public mainController() {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("main.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try {
fxmlLoader.load();
} catch (IOException exception) {
}
}
}
TextFlow.java - основной класс
package textflow;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class TextFlow extends Application {
@Override
public void start(Stage stage) throws Exception {
mainController customControl = new mainController();
stage.setScene(new Scene(customControl));
stage.setTitle("Custom Control");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
"@FXML TextFlow tofl;" В mainController.java есть то, что вызывает проблемы. Я удаляю это, все хорошо. Я добавляю это, это пусто.