자바FX(JavaFX)란? 

데스크톱 애플리케이션 리치 인터넷 애플리케이션(RIA)을 개발하고 배포하는 소프트웨어 플랫폼으로, 다양한 장치에서 실행 가능하다. 자바FX는 자바 SE를 위한 표준 GUI 라이브러리로서 스윙을 대체하기 위해 고안되었다.

출처 | 자바FX - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

자바FX - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

 

1) JavaFX 개발환경 구축 (Java버전 11부터는 내부에 탑재되어 있다고 한다!)

1. 구글창에 javafx download 입력 후 위 페이지로 이동!
2. 밑줄 친 페이지로 이동!
3. 자신의 컴퓨터의 OS에 맞는 설치파일 다운로드!
4. Eclipse Marketplace에서 e(fx)clipse를 입력하여 해당 플러그인 Install

해당 플러그인을 설치한 후, 이클립스를 재시작하고 나면 File-New-Other에 javafx가 생겼을 것이다! 

5. JavaFX Project 생성!

2) JavaFX 생명주기

우선, 자바FX 애플리케이션을 정의하기 위해서는 반드시 Application 추상 클래스를 상속받아야 한다!!

상속받은 후, 재정의할 메서드 중 start(), init(), stop()에 대해 알아볼 것이다.

start()는 애플리케이션이 실행할 준비가 되면 호출되는 메서드이다. 이 메서드는 반드시 재정의해야 하는 추상 메서드이다!

 

 

 

 

 

 

 

 

 

 

 

start메서드의 매개변수가 바로 애플리케이션의 윈도우이다!!!

FX에서는 윈도우의 반드시 하나의 Scene이 존재해야 한다. 

 

다음으로, init() 메서드를 살펴보자. 

init() 메서드는 인스턴스가 태어나고 초기화 작업에 사용되는 메서드이다.

 

다음, stop() 메서드는 메서드명과 같이 애플리케이션이 중지(종료)되었을 때 실행되는 메서드이다.

 

다음 예제를 보고 이해해보자!

package application;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class test extends Application{

	@Override
	public void start(Stage primaryStage) throws Exception {
		System.out.println("start() 메서드 호출 by  "+ Thread.currentThread().getName());
		//매개변수로 받은 stage 변수가 어플리케이션의 윈도우이다!!!
		
		//무대를 정의한다!!(FX에서는 윈도우에 반드시 하나의 Scene이 존재해야함)
		VBox parent = new VBox();//수직으로 컴포넌트를 배치하는 레이아웃 객체
													//FlowLayout과 비슷
		
		Scene s = new Scene(parent);//Parent란? 부모클래스를 의미하는 것이 아니라, 객체간 포함관계에서 바깥쪽
											//컨테이너를 의미
											//Swing과 비유하자면, 레이아웃 객체가 Parent이다!!
		
		Button bt = new Button("버튼");
		Button bt2 = new Button("버튼2");
		bt.setPrefWidth(200);
		bt.setPrefHeight(40);
		bt2.setPrefWidth(200);
		bt2.setPrefHeight(40);
		
		//버튼을 parent에 부착하기
		parent.getChildren().add(bt);
		parent.getChildren().add(bt2);
		
		//Scene을 윈도우에 부착
		primaryStage.setScene(s);
	
		bt.setOnAction((e)->{
			System.out.println("클릭했니?");
		});
		
		primaryStage.setMaxWidth(500);
		primaryStage.setMaxHeight(500);
		primaryStage.show();//윈도우 보이게
	}
	
	/*어플리케이션 시작 전, 초기화를 담당하는 메서드이다. 따라서 초기화할 게 없다면 재정의는 필수는 아니다
	 * 생성자 : 인스턴스가 태어날 떄 호출되는 메서드(더 시점이 빠르다)
	 * 초기화 : 인스턴스가 태어나고 초기화 작업에 사용되는 메서드*/
	
	public void init() throws Exception {
		//자바의 쓰레드의 메서드 중 현재 실행중인 쓰레드 정보를 얻기 위한 메서드 
		System.out.println("init() 메서드 호출 by "+ Thread.currentThread().getName());
	}
	
	public void stop() throws Exception {
		System.out.println("stop() 메서드 호출 by " + Thread.currentThread().getName());
	}
	
	
	public static void main(String[] args) {
		System.out.println("main() 메서드 호출 by " + Thread.currentThread().getName());
		launch(args);//애플리케이션을 실행하는 메서드!!!
	}
}

실행결과 보면 애플리케이션의 main() 메서드를 실행 후 애플리케이션의 초기화 작업인 init()를 실행한 후 애플리케이션이 실행될 준비가 완료되면 start() 메서드를 실행하며, 애플리케이션을 종료 시 stop() 메서드가 실행된다.

 

(start() 메서드를 실행시키는 쓰레드가 따로 존재하는데 JavaFX Application Thread가 이 일을 담당한다.

JavaFX Application Thread는 UI, Event을 담당하는 쓰레드이다.) - 사실, 이 부분은 아직 배우질 않아서 자세히는 적지 못하였음! 다음 수업을 듣고 보충해서 적어야 한다.

'프로그래밍 > Java' 카테고리의 다른 글

java - mail 보내기  (0) 2021.01.06
싱글톤 패턴 알아보기  (0) 2020.12.14
Java - JSON & XML 파싱  (0) 2020.11.17
Java - 소켓프로그래밍 기초 Echo System  (0) 2020.11.09
Java - JDBC(Java DataBase Connectiviy) 사용법  (0) 2020.11.05

+ Recent posts