填充ComboBox后,FXML场景构建器无效属性

Man*_*eli 7 java javafx javafx-2 fxml

我有这个FXML文件,我尝试填充ComboBox:

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="650.0" minWidth="750.0" prefHeight="700.0" prefWidth="822.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="table.Table">
   <children>
    <MenuButton fx:id="dateFilter" layoutX="6.0" layoutY="55.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="114.0" text="Date" />
    <ComboBox fx:id="descriptionFilter" editable="true" layoutX="226.0" layoutY="55.0" prefHeight="25.0" prefWidth="204.0" promptText="Series Description">
        <items>
            <FXCollections fx:factory="observableArrayList">
                <String fx:value="1" />
                <String fx:value="20" />
                <String fx:value="300" />
            </FXCollections>
        </items>
    </ComboBox>
  </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

但是因为我填充它,它将无法在SceneBuilder上打开并显示此错误:

错误

java.io.IOException: javafx.fxml.LoadException: Invalid attribute.
/C:/Users/BTAP/workspace/Tst/src/table/table.fxml:12
Run Code Online (Sandbox Code Playgroud)

并且它不会加载我的应用程序:

Caused by: javafx.fxml.LoadException: FXCollections is not a valid type.
Run Code Online (Sandbox Code Playgroud)

注意

如果我删除fx:factory="observableArrayList"它在场景构建器上加载并显示警告但仍然不会运行我的程序.

我不太明白,因为它与我在许多示例example1,example2,example3中看到的方式相同.

为什么我收到此错误?不应该工作吗?

我知道如何通过代码填充元素,但我正在寻找FXML解决方案.

Jam*_*s_D 14

您需要为FXCollections该类导入:

<?import javafx.collections.FXCollections ?>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您还需要`<?import java.lang.String?>`import.(这个例子已经存在,但这不是一个明显的问题!) (2认同)