добавить страницу f xml в центральную область BorderPane с помощью другого контроллера - PullRequest
0 голосов
/ 18 апреля 2020

Я использую javafx для создания GUI, но столкнулся с проблемой. Существует два контроллера и одна мастер-панель (BorderPane) 1. MainController: показывает начальный GUI и после щелчка по главному меню добавляет подменю в левую панель BorderPane (например, подменю использует DashboardController для меню панели мониторинга). 2. Когда Я нажимаю на подменю, то есть Уведомление на боковой стороне, затем Birthday.f xml следует добавить в центральную область мастер-панелей (для добавления страницы в центр используется DashboardController).

Проблема: при добавлении дня рождения не отображается ошибка .f xml но не отображается на экране. введите описание изображения здесь

MainController

package application;

import java.io.IOException;
import java.net.URL;
import java.util.Locale;
import java.util.ResourceBundle;
import admin.UserDetail;
import dashboard.DashBoardController;
import javafx.event.Event;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Region;
import javafx.stage.Stage;
import login.LoginModel;
import utility.ErrorLog;
import utility.Message;
import utility.Transition;

public class MainController implements Initializable {

    @FXML ImageView logo;
    @FXML Button dashbord;
    @FXML Button admin;
    @FXML Button trans;
    @FXML Button report;

    @FXML Label sessionId;
    @FXML Label userId;
    @FXML Label server;
    @FXML Button logout;

    @FXML BorderPane masterPanel;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        // TODO Auto-generated method stub

        //DashBoard Image Setup
        Image dashBoardImg = new Image(getClass().getResourceAsStream("/Images/dashBoard.png"));
        ImageView dashView = new ImageView(dashBoardImg);
        dashView.setFitHeight(25);
        dashView.setFitWidth(25);
        dashbord.setGraphic(dashView);

        // Admin Image Setup
        Image adminImg = new Image(getClass().getResourceAsStream("/Images/admin.png"));
        ImageView adminView = new ImageView(adminImg);
        adminView.setFitHeight(25);
        adminView.setFitWidth(25);
        admin.setGraphic(adminView);

        // Transaction Image Setup
        Image transImg = new Image(getClass().getResourceAsStream("/Images/transaction.png"));
        ImageView transView = new ImageView(transImg);
        transView.setFitHeight(25);
        transView.setFitWidth(25);
        trans.setGraphic(transView);

        // Report Image Setup
        Image reportImg = new Image(getClass().getResourceAsStream("/Images/report.png"));
        ImageView reportView = new ImageView(reportImg);
        reportView.setFitHeight(25);
        reportView.setFitWidth(25);
        report.setGraphic(reportView);

        // Loout Image Setup
        Image logoutImg = new Image(getClass().getResourceAsStream("/Images/Logout.png"));
        ImageView logoutView = new ImageView(logoutImg);
        logoutView.setFitHeight(25);
        logoutView.setFitWidth(25);
        logout.setGraphic(logoutView);

        //Company Logo Setup
        Image logoImg = new Image(getClass().getResourceAsStream("/Images/Cdl_Logo.png"));
        logo.setImage(logoImg);

        sessionId.setText(String.valueOf(UserDetail.getSessionId()));
        userId.setText(UserDetail.getUserId());
        server.setText(UserDetail.getServer());

    }

    public void logOut() {

        if(new LoginModel().logOut()) {

            try {

                Parent pane = FXMLLoader.load(getClass().getResource("/login/Login.fxml"));
                Scene scene = new Scene(pane);
                scene.getStylesheets().add(getClass().getResource("/application/style.css").toExternalForm());
                Stage stage = (Stage)logout.getScene().getWindow();
                stage.setScene(scene);
                stage.setMaximized(false);

                new Transition().fadeOut(pane);

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                ErrorLog.ErrorLog(e);
                Message.ErrorMsg(e.getMessage());
            }

        }   
    }

    public void loadMenu(Event event) {

        try {

            Object src = event.getSource();
            URL path = null;

            if (src.equals(dashbord)) 
                path = getClass().getResource("/dashboard/DashboardMenu.fxml");
            else if (src.equals(admin)) 
                path = getClass().getResource("/admin/AdminMenu.fxml");
            else if (src.equals(trans))
                path = getClass().getResource("/transaction/TransactionMenu.fxml");
            else if (src.equals(report))
                path = getClass().getResource("/report/ReportMenu.fxml");

            masterPanel.setLeft(FXMLLoader.load(path));

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            ErrorLog.ErrorLog(e);
        }
    }

    public BorderPane getPane() {
        return masterPanel;
    }
}
DashboardController
package dashboard;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

import application.MainController;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;

public class DashBoardController implements Initializable {

    @FXML TreeView<String> menu;

    public static int count = 0;

    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
        // TODO Auto-generated method stub

        TreeItem<String> dashBoard = new TreeItem<String>("DASHBOARD",new ImageView(new Image(getClass().getResourceAsStream("/Images/dashBoard.png"),50,50,false,true)));
        dashBoard.setExpanded(true);

        TreeItem<String> notification = new TreeItem<String>("NOTIFICATION");
        TreeItem<String> birthdayNoftify = new TreeItem<String>("BIRTHDAY");
        TreeItem<String> retireNoftify = new TreeItem<String>("RETIREMENT");
        notification.getChildren().addAll(birthdayNoftify,retireNoftify);
        notification.setExpanded(true);

        dashBoard.getChildren().add(notification);
        System.out.println(count++ +" " +System.currentTimeMillis()+" "+menu);
        menu.setRoot(dashBoard);
    }

    public void Action() {

        try {

            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/application/Main.fxml"));
            AnchorPane p = fxmlLoader.load();
            MainController mc = (MainController) fxmlLoader.getController();
            BorderPane pane = mc.getPane();
            pane.setCenter(FXMLLoader.load(getClass().getResource("/dashboard/Birthday.fxml")));

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }   
}
...