javafx在点击按钮的另一个fxml上创建新标签

时间:2017-04-15 07:26:40

标签: java javafx javafx-8

我想在单击按钮时在另一个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和场景构建器

2 个答案:

答案 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