我正在尝试在边框顶部设置一个 fxml hbox,边框位于另一个包含所有边框的边框内。容器的形式如下:Stage-> PincipalBorderPane -> Vbox(MainMenuBorderPane 的中心)-> ContentBorderPane(Vbox 的底部)。同样在我的 PrincipalBorderPane 的左侧,我有一个包含按钮的侧边栏菜单,我想在 ContentBorderPane 的顶部设置一个 fxml 文档,它就像一个小菜单来显示将在 ContentMenu 不同窗格底部设置的按钮。问题是我不知道如何将 fxml 设置为另一个边框窗格内的边框窗格。
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 应该设置在 ContentTools(ContentBorderpane) Admintools.fxml 的顶部可见,方法是按下我在 PrincipalBorderPane 左侧使用方法 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 的那一刻,变量 flag 始终为 true,我使用这个变量在 flag 为 true 时设置边框窗格中的 fxml,或者在 flag 为 false 时退出它。我不知道创建控制器实例是否是访问该 fxml 对象的方法,谢谢您的时间。