我想在单击按钮时在另一个fxml中创建新标签。我使用了以下代码,但抛出了以下异常
了java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
代码:
Controller.java
public class Controller {
public AnchorPane anchorPane;
public void OpenSecond() throws Exception{
Stage primaryStage = new Stage();
Parent root = FXMLLoader.load(getClass().getResource("sample1.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public void AddLabe(){
Label label = new Label("Label");
anchorPane.getChildren().add(label);
}
}
second.java
public class Second {
public void AddLiabel()
{
Controller controller = new Controller();
controller.AddLabe();
}
}
我正在使用IntelliJ IDEA和场景构建器
答案 0 :(得分:0)
您应该收到此异常,因为Java无法找到指定的文件或它是空的。搜索
Caused by: javafx.fxml.LoadException:
在例外中。
添加“sample1.fxml”并使用窗格初始化它应该可以解决问题。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.Pane?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="275.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" />
答案 1 :(得分:0)
很可能你错过了anchorPane的注释,而JavaFX并没有初始化它。尝试下一步:
@FXML
public AnchorPane anchorPane;
并确保您的FXML文件中列出了anchorPane
。