我试图获取我的按钮(在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>