JavaFx fxml Button无法从主类更改组内容

我试图获取我的按钮(在fxml中使用scenebuilder创建),将拆分窗格的右窗格从另一个fxml文件更改为另一个窗格,但是当我尝试与root(包含拆分窗格的组)进行交互时清除它,我得到了NullPointerException和invocationTargetException。

这是主要班级:


    public class Main extends Application {

    private Stage primaryStage;
    private BorderPane rootLayout;
    private AnchorPane loader2;
    private SplitPane acceuilmain;
    private AnchorPane acceuilgauche;
    private AnchorPane acceuildroite;

    Plateau P = new Plateau();

    int largeurPlat = 500;
    int longueurPlat = 500;

    String a;

    int ligne = 15;
    int colonne = 15;

    double largeurCase = largeurPlat / ligne;
    double longueurCase = longueurPlat / colonne;

    Case[][] plalateau = new Case[ligne][colonne];
    Jeton[][] comptoir = new Jeton[7][1];

    Group root;
    Group grille;
    Group chevalet;

    public void initrootlayout() {
        try {
            // Load root layout from fxml file.
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(Main.class.getResource("Rootlayout.fxml"));
            rootLayout = (BorderPane) loader.load();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void initacceuil(String url) {
        try {
            // Load root layout from fxml file.
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(Main.class.getResource(url));
            loader2 = (AnchorPane) loader.load();

            acceuilmain = (SplitPane) loader2.getchildren().get(0);
            acceuilgauche = (AnchorPane) acceuilmain.getItems().get(0);
            acceuildroite = (AnchorPane) acceuilmain.getItems().get(1);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @FXML
    private Button tet;

    @FXML
    void test(actionEvent event) {
        root.getchildren().clear();

    }



    @Override
    public void start(Stage primaryStage) {

        this.primaryStage = primaryStage;
        this.primaryStage.setTitle(
                "Je me suis toujours pausé la question si un titre beaucoup trop long fout la merde avec l'affichage même si je pense "
                + "pas que ça fera un truc ouf il faut toujours essayer,je me souvient encore de la fois ou j'allais en cours,c'était en "
                + "2020 et le coronavirus n'existait pas encore,les grains de riz dure que je mangeais été toujours aussi dégeulasse PUTAIN DE MERDE");

        root = new Group();
        initrootlayout();
        initacceuil("Startmenu.fxml");
        Scene scenePrincipale = new Scene(root,1200,1100,Color.WHITE);

        grille = new Group();
        for (int i = 0; i < ligne; i++) {
            for (int j = 0; j < colonne; j++) {

                Case carreau = new Case(i,j,largeurCase,longueurCase,Plateau.Plateau[i][j]);

                grille.getchildren().add(carreau);

                plalateau[i][j] = carreau;

            }
        }

        grille.setTranslateX(50);
        grille.setTranslateY(200);
        acceuilgauche.getchildren().add(grille);

        chevalet = new Group();
        for (int i = 0; i < 7; i++) {

            Jeton carreau = new Jeton(i,longueurCase);

            chevalet.getchildren().add(carreau);

            comptoir[i][0] = carreau;

        }

        chevalet.setTranslateX(100);
        chevalet.setTranslateY(800);

        acceuilgauche.getchildren().add(chevalet);

        root.getchildren().add(acceuilmain);
        root.getchildren().add(rootLayout);

        primaryStage.setScene(scenePrincipale);
        primaryStage.show();


    }

    public static void main(String[] args) {

        Application.launch(Main.class,args);
    }

}

fxml文件:


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

<?import javafx.scene.text.*?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.image.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane prefHeight="1000.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Main">
   <children>
      <SplitPane dividerPositions="0.5" minHeight="0.0" minWidth="0.0" prefHeight="1000.0" prefWidth="1200.0" stylesheets="@application.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <items>
          <AnchorPane minHeight="0.0" minWidth="0.0" />
          <AnchorPane minHeight="0.0" minWidth="0.0" stylesheets="@application.css">
               <children>
                  <Button layoutX="391.0" layoutY="455.0" mnemonicParsing="false" prefHeight="56.0" prefWidth="104.0" text="Lunatic">
                     <font>
                        <Font size="20.0" />
                     </font>
                  </Button>
                  <Button layoutX="131.0" layoutY="347.0" mnemonicParsing="false" prefHeight="87.0" prefWidth="364.0" style="-fx-background-color: lightgreen; -fx-background-radius: 190px;" text="La solitude" textAlignment="CENTER">
                     <font>
                        <Font size="35.0" />
                     </font>
                  </Button>
                  <Button fx:id="tet" layoutX="131.0" layoutY="245.0" mnemonicParsing="false" onaction="#test" prefHeight="87.0" prefWidth="364.0" text="Créateur de conflits" textAlignment="CENTER">
                     <effect>
                        <Blend />
                     </effect>
                     <font>
                        <Font size="35.0" />
                     </font>
                  </Button>
                  <Button layoutX="131.0" layoutY="455.0" mnemonicParsing="false" prefHeight="56.0" prefWidth="104.0" text="Facile">
                     <font>
                        <Font size="20.0" />
                     </font>
                  </Button>
                  <Button layoutX="261.0" layoutY="455.0" mnemonicParsing="false" prefHeight="56.0" prefWidth="104.0" text="Normal">
                     <font>
                        <Font size="20.0" />
                     </font>
                  </Button>
                  <Label layoutX="14.0" layoutY="576.0" prefHeight="56.0" prefWidth="218.0" style="-fx-background-color: lightgreen;" text="Nom du joueur 1 :">
                     <font>
                        <Font size="27.0" />
                     </font>
                  </Label>
                  <Label layoutX="14.0" layoutY="658.0" prefHeight="56.0" prefWidth="218.0" style="-fx-background-color: lightgreen;" text="Nom du joueur 2 :">
                     <font>
                        <Font size="27.0" />
                     </font>
                  </Label>
                  <ImageView fitHeight="104.0" fitWidth="113.0" layoutX="14.0" layoutY="237.0" pickOnBounds="true" preserveRatio="true">
                     <image>
                        <Image url="@Images/multiplayer.png" />
                     </image>
                  </ImageView>
                  <ImageView fitHeight="81.0" fitWidth="111.0" layoutX="26.0" layoutY="350.0" pickOnBounds="true" preserveRatio="true">
                     <image>
                        <Image url="@Images/bot.png" />
                     </image>
                  </ImageView>
                  <Label layoutX="248.0" layoutY="585.0" prefHeight="39.0" prefWidth="274.0" text="Ninja Hitler">
                     <font>
                        <Font size="27.0" />
                     </font>
                  </Label>
                  <Label layoutX="248.0" layoutY="667.0" prefHeight="32.0" prefWidth="274.0" text="Cris Staline  c'est mon eau">
                     <font>
                        <Font size="27.0" />
                     </font>
                  </Label>
                  <ImageView fitHeight="209.0" fitWidth="542.0" layoutX="77.0" layoutY="14.0" preserveRatio="true">
                     <image>
                        <Image url="@Images/Scrabble-logo.png" />
                     </image>
                  </ImageView>
               </children>
            </AnchorPane>
        </items>
      </SplitPane>
   </children>
</AnchorPane>


my_winter13292 回答:JavaFx fxml Button无法从主类更改组内容

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2382219.html

大家都在问