ошибка при использовании ArrayList в fxml - PullRequest
0 голосов
/ 16 мая 2018
  <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>

Я получаю сообщение об ошибке в каждой кнопке и даже не могу открыть fxml в sceneBuilder. Что не так с этим введите описание изображения здесь

Полный код 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 голосов
/ 17 мая 2018

Я не думаю, что можно добавить детей в список, особенно стандартный 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>

Ваши кнопки будут видны в вашем приложении, и вы сможетеделайте операции над детьми группы, как будто это был стандартный список.

...