JavaFX BorderPane - PullRequest
       76

JavaFX BorderPane

0 голосов
/ 21 февраля 2019

Я пытаюсь установить поверх пограничной панели 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нажимая кнопку в другом fxml (sidebar.fxml), который я установил слева от моей PrincipalBorderPane с помощью метода open_sidebar, я вызываю создание нового контроллера MenuContentController в SidebarController:

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, эту переменную я использую для установки fxml в borderpane, когда флаг равен true, или выхода из него, когда флагложноЯ не знаю, является ли создание экземпляра контроллера способом доступа к объектам этого fxml, спасибо за ваше время.

Principal Borderpane, clicking Sidebar set on left the Sidebar.fxml IMAGE

Graphic explanation IMAGE

...