JavaFX MenuBar 관련 에러 원인 분석 좀 질문드립니다.
조회수 1657회
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 로 열려고 해도 보이지가 않더라구요..
긴 글 읽어주셔서 감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력