簡體   English   中英

JavaFX8 FXML控制器初始化方法未調用

[英]JavaFX8 FXML Controller initialize method not invoked

我正在嘗試填充選擇框,但出了點問題。 這是我的代碼

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 Loader加載的字段(以及顯示的字段)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM