new
使用FXML时,永远不要实例化控制器,因为实例化控制器的工作是由FXMLLoader完成的。在实例化控制器时,它还会创建FXML中存在的节点的实例,并将其注入到控制器中。
如果未从FMXLLoader获取控制器实例,则该控制器内所有用eill注释的节点均为
@FXML空。因此,您必须始终将Controller从fxml中删除。
在您的情况下,您应该使用
bpic = fxmlLoader.getController();
代替
bpic =新的BottomPanelIncomingController();
更新资料
单击按钮更改FXML
让我们考虑以下方法在按钮单击时被调用
@FXMLpublic void callAccepted(ActionEvent event){ System.out.println("From controller"); nrb.loadSecondFxml();}您可以加载FXML并将其设置在场景上,然后设置为
JFXPanel
public void loadSecondFxml(){ //Load new FXML and assign it to scene FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("newFXML.fxml")); Parent root = (Parent) fxmlLoader.load(); Scene scene = new Scene(root, 600, 65); jfxPanel.setScene(scene);}注意: 我不确定您要在这里实现什么,将其作为示例只是为了 在单击按钮时加载FXML 并应用您的逻辑。



