JavaFX边框窗格

JavaFX边框窗格,javafx,borderpane,Javafx,Borderpane,我试图在边界窗格的顶部设置一个fxml hbox,边界窗格位于另一个包含所有内容的边界窗格中。 容器的形式如下: Stage->PincipalOrderPane->Vbox(主菜单下OrderPane的中心)->ContentBorderPane(在Vbox底部)。 同样在PrincipalBorderPane的左侧,我有一个包含按钮的侧边栏菜单,我想在ContentBorderPane的顶部设置一个fxml文档,它就像一个小菜单,显示在ContentMenu不同窗格底部设置的按钮。问题是我不

我试图在边界窗格的顶部设置一个fxml hbox,边界窗格位于另一个包含所有内容的边界窗格中。 容器的形式如下: Stage->PincipalOrderPane->Vbox(主菜单下OrderPane的中心)->ContentBorderPane(在Vbox底部)。 同样在PrincipalBorderPane的左侧,我有一个包含按钮的侧边栏菜单,我想在ContentBorderPane的顶部设置一个fxml文档,它就像一个小菜单,显示在ContentMenu不同窗格底部设置的按钮。问题是我不知道如何将fxml设置为位于另一个borderpane内的borderpane

public class MenuContentController implements Initializable {

private boolean flag = true;
private boolean flagsc = true;

@FXML
private JFXButton Minbtn;

@FXML
private JFXButton Maxbtn;

@FXML
private JFXButton Closebtn;

@FXML
private JFXButton Sidebarbtn;

@FXML
private JFXTextField Searchtxt;

@FXML
private JFXButton Ingressbtn;

@FXML
private JFXButton Egressbtn;

@FXML
private JFXButton Statusbtn;

@FXML
private BorderPane ContentTools;

@FXML
private void open_sidebar(ActionEvent event) throws IOException {
    BorderPane border_pane = (BorderPane) ((Node) event.getSource()).getScene().getRoot();
    if (flag) {
        //Revisar animación más adelante
        Parent sidebar = FXMLLoader.load(getClass().getResource("/app/fxml/Sidebar.fxml"));
        sidebar.translateXProperty();
        //
        border_pane.setLeft(sidebar);
        //
        Timeline timeline = new Timeline();
        KeyValue kv = new KeyValue(sidebar.translateXProperty(),0,Interpolator.EASE_IN);
        KeyFrame kf = new KeyFrame(Duration.seconds(10), kv);
        timeline.getKeyFrames().add(kf);
        timeline.play();
        flag = false;
    } else {
        border_pane.setLeft(null);
        flag = true;
    }

}
**@FXML
public void open_admintools_priv(ActionEvent event) throws IOException{
    ContentTools = new BorderPane();
    BorderPane bp = (BorderPane) ContentTools;
  if (flagsc) {
       Parent admintools = FXMLLoader.load(getClass().getResource("/app/fxml/AdminTools.fxml")); 
       bp.setTop(admintools);
       flagsc=false;
    } else {
       ContentTools.setTop(null);
       flagsc = true;
    }
    System.out.println(flagsc);**
}
方法open_admintools_priv应该通过按下另一个fxml(sidebar.fxml)中的按钮,将admintools.fxml设置在ContentTools(ContentBorderpane)的顶部可见,我使用方法open_sidebar设置了另一个fxml(sidebar.fxml),我称之为在SidebarController中创建MenuContentController的新控制器:

public class SidebarController implements Initializable {
private boolean flagsc = true;
@FXML
private JFXButton condominiobtn;

@FXML
private JFXButton adminbtn;

@FXML
private JFXButton finanzasbtn;

@FXML
private JFXButton reportesbtn;

@FXML
private JFXButton confbtn;
@FXML
private void open_admintools(ActionEvent event) throws IOException{
  MenuContentController aux = new MenuContentController();
  aux.open_admintools_priv(event);

}

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}    
}

另一个问题是,通过这种方式,在创建MenuContentController时,变量标志始终为true,当标志为true时,此变量用于在borderpane中设置fxml,或在标志为false时退出。我不知道创建控制器实例是否是访问该fxml对象的方法,谢谢您的时间


新创建的
边框窗格
永远不会添加到场景中。是否确实需要创建一个新字段,并将其分配给
@FXML
注释字段,而不是使用
fxmloader
插入的字段?如果不创建新的
边框窗格
,则节点的注入不起作用。(注意:在这种情况下,使用java代码设置字段来掩盖NPE从来都不是一个好主意,因为这只是隐藏症状,而不是解决问题。)请提供一个示例,说明您的目标以及它如何不符合您的期望。与您的问题无关:请学习java命名约定并遵守它们。新创建的
BorderPane
从未添加到场景中。是否确实需要创建一个新字段,并将其分配给
@FXML
注释字段,而不是使用
fxmloader
插入的字段?如果不创建新的
边框窗格
,则节点的注入不起作用。(注意:在这种情况下,使用java代码设置字段来掩盖NPE从来都不是一个好主意,因为这只是隐藏症状,而不是解决问题。)请提供一个示例,说明您的目标以及它如何不符合您的期望。与您的问题无关:请学习java命名约定并坚持它们。