[자바] JavaFX 자바GUI 공부하기

heegon·2025년 8월 6일

JAVA

목록 보기
19/20

JavaFX 공부 동기

2주동안 KDT 자바 프로젝트를 진행하면서 JavaFX를 이용하여 GUI를 구성하게 되었다. 은행, 병원, 기업. 3가지 중에서 한 가지 주제를 잡아서 해당 조직에서 사용하고 있거나, 사용할 수 있는 프로그램을 만드는 것이 목표였다.

우리 팀은 병원을 주제로 잡고, 병원에서 환자의 진료 접수를 받고, 의사가 환자에게 처방을 내리는 것을 주요기능으로 잡았다.

프로젝트의 자세한 회고록은 추후에 업로드할 예정이다.

JavaFX 시작

JavaFX 설치

  1. JavaFX SDK 다운로드 (JDK 버전에 똑같이 맞춰서 다운로드 해줘야 한다. JDK 17 이라면, JavaFX 17을 설치.)

  2. 코드 편집기(IDE)에서 설정하기 (Eclipse 기준)
    프로젝트 생성 -> Project Properties -> Java Build Path -> Libraries -> Add External JARs -> C:\javafx-sdk-17\lib 안에 있는 모든 .jar 파일 선택해서 추가.

  3. Run Configurations -> Arguments -> VM arguments 에 다음 내용 추가
    --module-path "C:\javafx-sdk-17\lib" --add-modules javafx.controls,javafx.fxml,javafx.graphics,javafx.web

JavaFX를 사용하려면

public class MainApp extends Application {
	@Override
    public void start(Stage primaryStage) {
    	//루트 컨테이너 생성
    	VBox vbox = new VBox();
    	
        //Scene 생성 (가로 400, 세로 300(
    	Scene scene = new Scene(vbox, 400, 300);
    	
        //Stage primaryStage에 설정
    	primaryStage.setTitle("Stage"); //창 제목 설정
        primaryStage.setScene(scene); //Scene 붙이기
        primaryStage.show(); //창 띄우기
    }
}

javaFX를 실행해주려면

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

다음과 같은 main 메소드가 꼭 필요하다.

Stage

실제 윈도우 창.

Stage 주요 메소드

setTitle(String title) : 창 제목 설정
setScene(Scene scene) : 해당 Stage에 Scene 넣기
show() : 창 띄우기
close() : 창 닫기
setResizable(boolean) : 창 크기 조절 가능 여부

Scene

Stage 안에 표시되는 장면

VBox & HBox

배치에 가장 많이 사용한 두 가지 레이아웃이다.
VBox는 세로로 다른 아이템들을 배치한다.
HBox는 가로로 다른 아이템들을 배치한다.

Label label1 = new Label();
Button button1 = new Button();

VBox vbox1 = new VBox();
vbox1.getChildren().addAll(label1, button1);

다음과 같이 사용 가능하다.
VBox vbox변수이름 = new VBox();를 통해서 VBox 선언이 가능하고, .getChildren().add(하나) 또는 .getChildren().addAll(여러개) 명령어를 통해서 Box 내부에 아이템들을 추가할 수 있다.

Label

문구다. 간단하게 단어나 문장을 표현할 수 있다.

Label titleLabel = new Label("제목");

이렇게 선언 가능하다.

Button

버튼.

Button button1 = new Button();

과 같이 선언하여 사용 가능하다.

Button button1 = new Button("버튼1");

이런 식으로 선언하면 버튼 위에 "버튼1"이라는 문구가 있는 버튼이 생성된다.

버튼 이벤트 처리

버튼명.setOnAction (e -> { 
	//버튼 눌렀을 때의 동작 코드
});

마우스 위에 올렸을 때

버튼명.setOnMouseEntered ( e -> 버튼명.setStyle( 
	//마우스가 위로 올라갔을 때의 동작
));

마우스가 벗어났을 때

버튼명.setOnMouseExited ( e -> 버튼명.setStyle(
	//마우스가 벗어났을 때의 동작
));

CSS효과 입히기

JavaFX는 독특한 점이 GUI에 스타일을 입힐 때, css문법을 사용 가능하다는 것이다.
예를 들어 다음과 같이,

버튼명.setStyle (
	"-fx-border-radius: 15;" + //모서리 둥글게
    "-fx-background-radius: 15;" + //모서리 둥글게
    "-fx-text-fill: white;" + //글씨색 하얗게
    "-fx-font-size: 12px;" + //글씨크기
    "-fx-font-weight: bold;" + //글씨체 두껍게
    "-fx-font-family: '고딕';" + //글꼴을 '고딕'으로
    "-fx-background-color: #faf3b3;" + //배경색 변경
    "-fx-border-color: transparent;" + //테두리색 제거
    "-fx-background-color : transparent;" //배경색 제거
)

버튼에 CSS 속성을 입힌다는 가정하에 다음과 같이 사용 가능하다.

profile
❤️

0개의 댓글