我在fxml中使用ArrayList时出错

时间:2018-05-16 17:35:13

标签: javafx-8

  <children>
   <fx:define>
       <ArrayList fx:id="buttons">
       <Button fx:id="btn1" layoutX="93.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
       <Button fx:id="btn2" layoutX="187.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
       <Button fx:id="btn3" layoutX="255.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
       <Button fx:id="btn6" layoutX="505.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
       <Button fx:id="btn4" layoutX="351.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
       <Button fx:id="btn5" layoutX="436.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
       </ArrayList>
   </fx:define>

我在每个按钮中都出错,我甚至无法在sceneBuilder中打开fxml。这个enter image description here

出了什么问题

以下fxml的完整代码

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


<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>


<?import java.util.ArrayList?>
<AnchorPane fx:controller="sample.Controller" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">

   <children>
       <fx:define>
           <ArrayList fx:id="buttons">
           <Button fx:id="btn1" layoutX="93.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
           <Button fx:id="btn2" layoutX="187.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
           <Button fx:id="btn3" layoutX="255.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
           <Button fx:id="btn6" layoutX="505.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
           <Button fx:id="btn4" layoutX="351.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
           <Button fx:id="btn5" layoutX="436.0" layoutY="31.0" mnemonicParsing="false" text="Button" />
           </ArrayList>
       </fx:define>
   </children>



</AnchorPane>

我想将所有按钮存储在控制器

中的一个数组中

1 个答案:

答案 0 :(得分:-1)

我认为不可能在List中添加子项,尤其是标准ArrayList。 FX组件使用ObservableList来存储子组件。

我建议您将按钮添加到组中,如下所示:

    <AnchorPane>
        <Group fx:id="group">
            <Button fx:id="btn1" layoutX="93.0" layoutY="31.0" mnemonicParsing="false" text="Button"/>
            <Button fx:id="btn2" layoutX="187.0" layoutY="31.0" mnemonicParsing="false" text="Button"/>
            <Button fx:id="btn3" layoutX="255.0" layoutY="31.0" mnemonicParsing="false" text="Button"/>
            <Button fx:id="btn6" layoutX="505.0" layoutY="31.0" mnemonicParsing="false" text="Button"/>
            <Button fx:id="btn4" layoutX="351.0" layoutY="31.0" mnemonicParsing="false" text="Button"/>
            <Button fx:id="btn5" layoutX="436.0" layoutY="31.0" mnemonicParsing="false" text="Button"/>
        </Group>
    </AnchorPane>

您的按钮将在您的应用中显示,您可以对群组孩子进行操作,就像标准列表一样。