자바의 GUI 라이브러리인 JAVAFX를 인텔리제이에 설치하고 실행테스트를 한다.
젯브레인 문서를 참고해서 작성한다.
www.jetbrains.com/help/idea/javafx.html#create-project
자바 11 이전까지 JAVAFX 는 자바의 기본 패키지에 포함되었는데 11 이후 부터는 분리되었다. 때문에 자바FX를 설치하려면 별도의 방법으로 한다.
아래의 Javafx 사이트에 들어가서 자신의 시스템에 맞는 버전을 다운로드한다. 테스트한 환경은 윈도우10, 자바 버전 15, JAVAFX 는 Windows x64 SDK 15.0.1을 설치하였다.
SDK 를 다운로드 받으면 압축파일이 하나 있는데 의미있는 폴더에 압축을 해제한다. 필자는 java sdk가 설치된 폴더와 같은 레벨의 디렉토리에 압축을 풀었다.
인텔리제이를 시작하여 새로운 프로젝트를 만든다.
왼쪽의 Java FX를 선택하고 오른쪽에 자바SDK 를 선택한다. java version "15" 라고 쓴게 보인다. 자바 SDK가 선택되었다. Next 를 클릭한 후 프로젝트의 이름을 지어주고 Finish 한다.
다음은 라이브러리를 추가해준다. file 의 Project Settings에 들어가서 Libraries 탭을 클릭한다. javafx-sdk 폴더의 lib 폴더를 선택한 후 ok 를 클릭한다.
다음은 VM options 를 설정해야 한다. VM 은 자바가상머신이고 런타임 환경이다. 메뉴의 Run - Edit Configuration 에 들어간다.
다른 웹사이트에서는 다음과 같이 옵션을 주라고 하는 곳이 많았다. 그러나 글쓴이 환경에서는 에러메시지와 함께 동작하지 않았다.
--module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml
가운데 PATH_TO_FX 는 라이브러리 저장소인데 아래처럼 그냥 디렉토리의 풀네임을 적으니 구동이 잘 되었다.
(각자의 실행환경에 따라 차이가 있을 수 있다.)
--module-path C:\java\javafx-sdk-15.0.1\lib --add-modules javafx.controls,javafx.fxml
아무것도 안쓰여있는 작은 창이 작동한 것을 확인하였다면 텍스트를 표시하기 위한 코드를 작성한다.
아래 코드는 인텔리제이가 만든 샘플코드를 약간 수정했다. Main.java에 약간 손을 본다.
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
printText(primaryStage);
for (String s :Font.getFamilies()) {
System.out.println(s);
}
}
static void printText(Stage stage){
Text text = new Text();
text.setFont(Font.font("Verdana", FontWeight.BOLD, FontPosture.REGULAR, 30));
text.setX(50);
text.setY(100);
text.setText("Hello my friend!\n\nWe meet again!");
Group root = new Group(text);
Scene scene = new Scene(root, 700, 500 );
stage.setTitle("Text Sample");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
텍스트를 만들어서 화면에 출력하는 내용이다. 시스템에서 사용가능한 font 를 알고 싶으면 Font.getFamilies 메서드로 확인가능하다.
작동이 잘 되는 것을 확인할 수 있다.
이제부터 JavaFX로 프로그래밍이 가능하다.