JAVA
Eclipse + JavaFX: 간단한 요금 입력 시스템 만들기
지오준
2024. 12. 19. 10:00
반응형
이 블로그에서는 Eclipse와 JavaFX를 이용해 간단한 요금 입력 시스템을 구현하는 방법을 소개합니다. 이를 통해 JavaFX UI 구성과 이벤트 처리를 배우고, 프로젝트를 설정하는 방법을 익힐 수 있습니다.
1. 준비물
- Eclipse IDE (2023-xx 버전 추천)
- JDK 17 이상
- JavaFX SDK (https://openjfx.io/ 에서 다운로드)
2. 프로젝트 설정
Eclipse에서 새로운 Java 프로젝트를 생성합니다.
- 프로젝트 이름:
BillingSystem
- 프로젝트 이름:
JavaFX SDK를 프로젝트에 추가합니다.
- 프로젝트 속성(Project Properties) > Java Build Path > Libraries >
Modulepath
> Add External JARs - JavaFX SDK 폴더의
lib
디렉토리에서 JAR 파일을 추가합니다.
- 프로젝트 속성(Project Properties) > Java Build Path > Libraries >
VM 옵션 설정
- Run Configurations > VM Arguments에 다음을 추가:
--module-path "C:\path\to\javafx-sdk\lib" --add-modules javafx.controls,javafx.fxml
- Run Configurations > VM Arguments에 다음을 추가:
3. UI 설계
FXML 파일을 작성하여 간단한 UI를 만듭니다.
BillingSystem.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<BorderPane xmlns:fx="http://javafx.com/fxml" fx:controller="application.BillingController">
<top>
<Label text="요금 입력 시스템" style="-fx-font-size: 20; -fx-padding: 10;" />
</top>
<center>
<GridPane hgap="10" vgap="10" style="-fx-padding: 20;">
<Label text="항목 이름:" GridPane.rowIndex="0" GridPane.columnIndex="0" />
<TextField fx:id="itemNameField" GridPane.rowIndex="0" GridPane.columnIndex="1" />
<Label text="단가:" GridPane.rowIndex="1" GridPane.columnIndex="0" />
<TextField fx:id="unitPriceField" GridPane.rowIndex="1" GridPane.columnIndex="1" />
<Label text="수량:" GridPane.rowIndex="2" GridPane.columnIndex="0" />
<TextField fx:id="quantityField" GridPane.rowIndex="2" GridPane.columnIndex="1" />
<Button text="계산" fx:id="calculateButton" GridPane.rowIndex="3" GridPane.columnIndex="1" />
</GridPane>
</center>
<bottom>
<Label fx:id="resultLabel" style="-fx-padding: 10;" />
</bottom>
</BorderPane>
4. 컨트롤러 작성
BillingController.java
package application;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class BillingController {
@FXML
private TextField itemNameField;
@FXML
private TextField unitPriceField;
@FXML
private TextField quantityField;
@FXML
private Button calculateButton;
@FXML
private Label resultLabel;
@FXML
public void initialize() {
calculateButton.setOnAction(event -> calculateTotal());
}
private void calculateTotal() {
try {
String itemName = itemNameField.getText();
double unitPrice = Double.parseDouble(unitPriceField.getText());
int quantity = Integer.parseInt(quantityField.getText());
double total = unitPrice * quantity;
resultLabel.setText(itemName + "의 총 요금은: " + total + "원 입니다.");
} catch (NumberFormatException e) {
resultLabel.setText("올바른 숫자를 입력하세요.");
}
}
}
5. 메인 애플리케이션
Main.java
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Parent root = FXMLLoader.load(getClass().getResource("BillingSystem.fxml"));
Scene scene = new Scene(root);
primaryStage.setTitle("요금 입력 시스템");
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
6. 실행 결과
프로그램을 실행하면 다음과 같은 화면이 나타납니다:
- 항목 이름, 단가, 수량을 입력합니다.
계산
버튼을 누르면 하단에 총 요금이 표시됩니다.- 입력값이 잘못되었을 경우 에러 메시지가 표시됩니다.
7. 개선 아이디어
- 계산된 데이터를 테이블에 추가하여 여러 항목을 관리하는 기능 추가
- CSS를 활용한 UI 스타일링 개선
- 데이터 저장 및 불러오기 기능 추가
JavaFX를 활용한 간단한 프로젝트를 통해 기본기를 다지는 좋은 연습이 되길 바랍니다!
반응형