Я использую 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();
}
}
}