JavaFX MenuBar 관련 에러 원인 분석 좀 질문드립니다.


JavaFX 실습을 하면서 메뉴 바를 하나 만들어보려고 하는데 다음과 같이 소스를 코딩하면 'java.lang.reflect.InvocationTargetException' 이 발생합니다.

'gui' 라는 패키지 안에 'MainWindow.java' 와 'MainWindowFxml.fxml' 파일이 존재합니다. 우선 'MainWindow.java' 소스 내용은 이렇습니다.

package gui;

import java.util.*;
import java.net.URL;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;

public class MainWindow extends Application {
    @FXML private TextArea textArea;

    public void initialize(URL location, ResourceBundle resources) {

    }


    public void handleImport(ActionEvent e) {
        textArea.appendText("Import\n");
    }

    public void handleExport(ActionEvent e) {
        textArea.appendText("Export\n");
    }

    public void handleExit(ActionEvent e) {
        textArea.appendText("Exit\n");
    }

    public void handleSubject(ActionEvent e) {
        textArea.appendText("Subject Score Cal");
    }

    public void handleSaving(ActionEvent e) {
        textArea.appendText("Saving Cal");
    }

    public void handleMilitary(ActionEvent e) {
        textArea.appendText("Military Cal");
    }

    public void handleInfo(ActionEvent e) {
        textArea.appendText("Program Info");
    }

    public void handleAbout(ActionEvent e) {
        textArea.appendText("About us");
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent mainWindowFxml = FXMLLoader.load(getClass().getResource("MainWindowFxml.fxml"));
        Scene menuBarScene = new Scene(mainWindowFxml); //Create Scene Object 

        primaryStage.setWidth(500.0);
        primaryStage.setHeight(300.0);
        primaryStage.setResizable(false);
        primaryStage.setTitle("Master Calculator 1.0.0");
        primaryStage.setScene(menuBarScene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

'MainWindowFxml.fxml' 의 태그는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.*?>
<BorderPane xmlns:fx="http://javafx.com/fxml" preHeight="200.0" preWidth="400.0" 
    fx:controller="GCS4C-Master-Calculator.gui.MainWindow">
    <top>
        <VBox>
            <children>
                <MenuBar>
                    <menus>
                        <Menu text="File">
                            <items>
                                <MenuItem text="Import" onAction="#handleImport">
                                </MenuItem>
                                <MenuItem text="Export" onAction="#handleExport">
                                </MenuItem>
                                <MenuItem text="Exit" onAction="#handleExit">
                                </MenuItem>
                            </items>
                        </Menu>
                        <Menu text="View">
                            <items>
                                <MenuItem text="Subject Score Cal" onAction="#handleSubject">
                                </MenuItem>
                                <MenuItem text="Saving Cal" onAction="#handleSaving">
                                </MenuItem>
                                <MenuItem text="Military Cal" onAction="#handleMilitary">
                                </MenuItem>
                            </items>
                        </Menu>
                        <Menu text="Help">
                            <items>
                                <MenuItem text="Program Info" onAction="#handleInfo">
                                </MenuItem>
                                <MenuItem text="About us" onAction="handleAbout">
                                </MenuItem>
                            </items>
                        </Menu>
                    </menus>
                </MenuBar>  
            </children>
        </VBox>
    </top>
    <center>
        <TextArea fx:id="textArea"/>
    </center>
</BorderPane>


어디가 문제인지 모르겠습니다.. FXML 의 경우 Scene Builder 로 열려고 해도 보이지가 않더라구요..

긴 글 읽어주셔서 감사합니다.


조회수 25


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close