我正在尝试加载我的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/