JavaFX8 FXML Controller 初始化方法未调用

标签 java fxml

我正在尝试填写选择框,但出了点问题。 这是我的代码

Controller.java相关部分

public class BookingController implements Initializable {

   @FXML
   private ChoiceBox<String> orderType;       
   @Override
   public void initialize(URL url, ResourceBundle rb) { 
        orderType=new ChoiceBox<>();
        orderType.getItems().add("LabShoot");
        orderType.getItems().add("SoftData");
        orderType.getItems().add("Booking");
    }    
}

FXML.fxml

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<AnchorPane id="AnchorPane" prefHeight="447.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Orders.BookingController">
   <children>
      <ChoiceBox fx:id="orderType" layoutX="225.0" layoutY="59.0" onContextMenuRequested="#value_Changed" prefWidth="150.0" />
      <DatePicker layoutX="116.0" layoutY="118.0" prefHeight="25.0" prefWidth="173.0" />
      <ChoiceBox layoutX="387.0" layoutY="118.0" prefHeight="25.0" prefWidth="173.0" />
      <ChoiceBox layoutX="119.0" layoutY="188.0" prefHeight="25.0" prefWidth="173.0" />
      <ChoiceBox layoutX="387.0" layoutY="188.0" prefHeight="25.0" prefWidth="173.0" />
      <TextField layoutX="119.0" layoutY="257.0" prefHeight="25.0" prefWidth="173.0" />
      <TextField layoutX="388.0" layoutY="257.0" prefHeight="25.0" prefWidth="173.0" />
      <TextField layoutX="119.0" layoutY="325.0" prefHeight="25.0" prefWidth="173.0" />
      <Button layoutX="387.0" layoutY="325.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="173.0" text="Add" />
      <Label layoutX="30.0" layoutY="122.0" prefHeight="17.0" prefWidth="42.0" text="Date:" />
      <Label layoutX="214.0" layoutY="14.0" text="Customer Name" textFill="#2807ff">
         <font>
            <Font size="24.0" />
         </font>
      </Label>
      <Label layoutX="336.0" layoutY="122.0" prefHeight="17.0" prefWidth="42.0" text="Time:" />
      <Label layoutX="22.0" layoutY="193.0" text="Booking Type:" />
      <Label layoutX="337.0" layoutY="192.0" text="Dealer:" />
      <Label layoutX="31.0" layoutY="329.0" prefHeight="17.0" prefWidth="42.0" text="Price:" />
      <Label layoutX="332.0" layoutY="261.0" text="Address:" />
      <Label layoutX="27.0" layoutY="261.0" text="Duration:" />
   </children>
</AnchorPane>

程序运行正确,但我放入选择框中的项目没有出现。

最佳答案

这是因为

orderType=new ChoiceBox<>();

您永远不应该初始化用@FXML注释的字段。如果您这样做,您的字段将不再引用 FXML 加载器加载的字段(以及显示的字段)。

关于JavaFX8 FXML Controller 初始化方法未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44649932/

相关文章:

java - 这段代码如何用 for 循环形成 z 形状?

JavaFX:如果另一个对象处于 Activity 状态,则用于禁用按钮的 FXML 脚本

JavaFX 使用 FXML 文件构建 borderPane

java - 转换 FXML 对话框的结果

java - 从 HashMap 填充类属性

java - WinAnt 出现一些问题 --> 命令 "ant"不存在或写错了?

java - 如何在Java中重新定义已经定义的类

JavaFX StackPane 不显示方法内部的对象

java - FXML 中的动态属性值?

java - 如何在Windows中的CLASSPATH中设置 "Program Files"和 "Program Files (x86)"