목공책 하나 들이셔요~

2014년 3월 21일 금요일

[JavaFX]따라하기#1 - Hello JavaFX

이 글은 Getting Started with JavaFX 시리즈 글을 번역한 것입니다. 원문은 아래 링크를 확인하세요.
http://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.htm

JavaFX 어플리케이션을 만드는 방법에 대해서 설명하는 가장 좋은 방법은 "Hello World" 어플리케이션을 만들어 보는 것입니다. 게다가 JavaFX 개발환경이 제대로 구축되었는지 확인할 수 있는 방법이기도 합니다.

이 튜토리얼에서 사용된 개발환경은 Netbeans IDE 7.3 버전입니다. 시작하기 전에 지금 사용하는 Netbeans IDE가 JavaFX 2를 지원하는지 확인하시기 바랍니다.



어플리케이션 만들기

1. Netbeans IDE의 File메뉴에서 New Project를 선택합니다.

2. JafaFX 어플리케이션 카테고리에서 JavaFX Application을 선택하고 Next를 누릅니다.

3. 프로젝트의 이름을 HelloWorld로 정하고 Finish를 누릅니다.


Netbeans는 HelloWorld.java라는 파일을 편집 상태로 만들 것이고 그 내용은 다음과 같을 것입니다.

package helloworld;
 
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
 
public class HelloWorld extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });
        
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    } 
}

위 코드를 통해 JavaFX 어플리케이션의 기본 구조에 대해 중요한 사실들을 알 수 있습니다.

  • JavaFX 어플리케이션의 메인 클래스는 javafx.application.Application 클래스를 계승한 것입니다. 그리고 이 클래스의 start() 메쏘드가 JavaFX 어플리케이션을 시작하는 지점입니다.
  • JavaFX 어플리케이션은 Stage와 Scene이라는 개념으로 유저 인터페이스 컨테이너를 정의합니다. Stage는 최상위에 존재하는 JavaFX 컨테이너 클래스입니다. Scene은 모든 컨텐츠의 컨테이너 역할을 합니다. 위 리스트는 Stage와 Scene을 생성하고 Scene을 지정한 크기로 보이게(visible) 하는 것입니다.
  • JavaFX에서 Scene의 내용은 계층적인 구조의 Scene Graph의 노드들로 표현됩니다. 위의 예에서 루트 노드는 크기 조절이 가능한 레이아웃 노드인 StackPane 객체입니다. 그래서 루트 노드의 크기는 Scene의 크기에 따라 같이 변하며, Scene의 크기는 사용자에 의해 조절되는 Stage의 크기에 따릅니다.
  • 루트노드는 하나의 자식만을 갖는데 텍스트를 가진 버튼 컨트롤입니다. 이 컨트롤은 클릭했을 때 뭔가를 출력하도록 되어 있습니다.
  • 원래 JavaFX 어플리케이션은 main() 함수가 필요 없습니다. 왜냐하면 JavaFX 패키징툴로 JavaFX 어플리케이션의 Jar를 만들면 그 안에 JavaFX 런처가 포함되어 있고, 이 런처가 main() 함수를 포함하기 때문입니다. 하지만 JavaFX 런처가 없는 환경에서도 실행이 가능하려면 main() 함수를 위와 같이 구현하는 것이 좋습니다. 예를 들어 JavaFX를 완벽하게 지원하지 않는 IDE 환경에서 실행하거나 JavaFX 코드를 포함한 Swing 어플리케이션의 경우가 그렇습니다.

아래 그림은 Hello World 어플리케이션의 Scene Graph를 보여줍니다.


어플리케이션의 실행

1. 프로젝트 윈도우에서 HelloWorld 프로젝트 노드에 오른쪽 버튼을 클릭하여 Run 메뉴를 선택합니다.

2. 실행되는 어플리케이션에서 Say "Hello World" 버튼을 클릭합니다.

3. NetBeans Output 윈도우에 "Hello World!"라는 텍스트가 출력되는지 확인합니다.



이렇게 당신의 첫 JavaFX 어플리케이션을 만들어 보았습니다. 이어지는 연재를 통해서 더 많은 기능들을 배워 보겠습니다.

댓글 없음:

댓글 쓰기