我正在尝试加载我的fxml文件,该文件很好并且已加载(我已经在主类中进行了尝试)。但是,当我尝试在Controller中设置内容时,出现了一条错误消息:


不兼容的类型:java.lang.Object无法转换为javafx.scene.Node
在addNewCategorie.getDialogPane()。setContent(fxmlLoader.load());


我的控制器类:

@FXML
private BorderPane mainBorder;

@FXML
public void handle_the_addition_of_newCategorie(){
    Dialog<ButtonType> addNewCategorie = new Dialog<>();
    addNewCategorie.setTitle("Add Categorie");
    addNewCategorie.initOwner(mainBorder.getScene().getWindow());
    FXMLLoader fxmlLoader = new FXMLLoader();
    fxmlLoader.setLocation(getClass().getResource("/AddNewCategorie.fxml"));
    try{
        addNewCategorie.getDialogPane().setContent(fxmlLoader.load());
    }catch (IOException E){
        System.out.println("IOEXception : "+E.getMessage());
    }
    addNewCategorie.getDialogPane().getButtonTypes().add(ButtonType.CLOSE);
    addNewCategorie.show();
}


我的fxml文件:

<?import javafx.scene.control.Button?>

<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<BorderPane fx:id="mainBorder" fx:controller="sample.Controller"
            xmlns:fx="http://javafx.com/fxml" style="-fx-background-color:#485460">
    <center>
        <HBox spacing="20" alignment="CENTER">
            <Button text="Add new Categorie" style="-fx-background-color:#2ecc71; -fx-text-fill:white" onMouseClicked="#handle_the_addition_of_newCategorie"/>
        </HBox>
    </center>
</BorderPane>

最佳答案

必须更改此:

addNewCategorie.getDialogPane().setContent(fxmlLoader.load());


至:

addNewCategorie.getDialogPane().setContent((Node)fxmlLoader.load());


和:

fxmlLoader.setLocation(getClass().getResource("/AddNewCategorie.fxml"));


至:

fxmlLoader.setLocation(getClass().getClassLoader().getResource("/AddNewCategorie.fxml"));

关于java - 如何修复无法将对象转换为javafx.scene.Node,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59730056/

10-09 01:59