간단한 탐색 기능이있는 응용 프로그램을 구현하려고합니다. 하나의 메인 메뉴, 3 개의 서브 메뉴, 각각 다른 3 개의 서브 메뉴.JavaFX, 같은 창에서 화면 열기
메인 메뉴를 루트 스크린으로 사용하여 동일한 하위 창에서 모든 하위 메뉴를 반복적으로 열어야하는 응용 프로그램이 필요합니다. 각 하위 메뉴의 "뒤로"버튼을 통해 해당 메뉴로 돌아갈 수 있어야합니다.
각 (!) 메뉴 및 하위 메뉴에 대해 Main 클래스, Controller 클래스 및 FXML 파일을 구현했습니다.
예. 내 메인 메뉴
package application;
import org.apache.log4j.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
public class Main extends Application {
// Initialize Logger
private static final Logger logger = Logger.getLogger(Main.class);
@Override
public void start(Stage primaryStage)
{
try
{
AnchorPane root = (AnchorPane)FXMLLoader.load(getClass().getResource("MainFrame.fxml"));
Scene scene = new Scene(root,1000,500);
primaryStage.setScene(scene);
primaryStage.show();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
logger.info("Starting application.");
launch(args);
}
}
내 MainController
package application;
import org.apache.log4j.Logger;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class MainFrameController
{
private static final Logger logger = Logger.getLogger(MainFrameController.class);
@FXML
private Button btn_random1;
@FXML
private Button btn_random2;
@FXML
private Button btn_random3;
@FXML
private Button btn_random4;
public void initialize()
{
//mainService = new MainService();
}
@FXML
private void onRandomButton1() throws Exception
{
logger.info("onRandomButton1Clicked");
Stage stage = new Stage();
AnchorPane root;
root = (AnchorPane)FXMLLoader.load(getClass().getResource("RandomFXML1.fxml"));
Scene scene = new Scene(root,1000,500);
stage.setScene(scene);
stage.show();
}
@FXML
private void onRandomButton2()
{
logger.info("onRandomButton1");
}
@FXML
private void onRandomButton3()
{
logger.info("onRandomButton2");
}
@FXML
private void onRandomButton4()
{
Platform.exit();
logger.info("onRandomButton3");
}
}
는 같은 창에서 열리지 않습니다 때문에 단순히 코드를 변경하는 방법이 있나요?
나는이 문제를 해결하는 비교적 복잡한 방법으로 몇 가지 자습서를 보았습니다. 코드를 변경하고 너무 많이 변경하지 말고, 그렇지 않으면 다시 시작해야 할 것입니다.
많은 Main/Controller/FXML 조합 중 하나 일뿐입니다. 약 10 개의 화면과 "자막"이 있습니다 (자바가 새 창을 여는 방식).
아이디어 누구? 아니면 상대적으로 간단한 튜토리얼 (전체 코드를 변경하지 않아도 됨)?
감사합니다.