2023. 9. 24. 23:33ㆍJava언어 공부
Java FX 프로그램에 추가하는 방법
프로젝트 우클릭 > Build Path > Add Libraries > User Library > Java FX
Java FX 실행하고 나서 오류가 생긴다면
Run configuration > Arguments > Vm arguments에
--module-path=경로-sdk-버전 번호\lib
--add-modules=javafx.controls
추가하면 됨
Java FX
자바 초기에 AWT(Abstract Windows Toolkit) GUI 라이브러리를 사용했으나,
자바 8~10 이후부터는 SDK에 포함하여 JavaFX라는 GUI 라이브러리를 제공하고 있다. (지금은 따로 배포)
Adobe Flash 기술, Microsoft의 Silverlight 기술과 경쟁하기 위해 개발된
Rich Internet Application을 개발하기 위한 기술
Rich Internet Application이란?
웹 브라우저 내에서 실행하는 응용 프로그램을 개발하기 위한 것
GUI의 기초 지식
우리가 프로그램을 처음 만들면 사용하는 곳은 보통 콘솔 창이다.
이 콘솔창은 보통 텍스트 위주이다.
하지만 우리가 주로 사용하는 프로그램은 콘솔 창이 아닌 윈도우 형태이다.
텍스트 위주가 아니고 키보드 마우스 등을 이용한다.
이런 것들을 GUI 응용이라고 한다.
프로그램을 실행하면 윈도우가 나타날 것인데,
이 윈도우들은 모두 modality 특성을 가질 것이다.
Modality 특성의 종류
- Modeless
특정 윈도우를 종료하지 않고 다른 윈도우와 상호작용이 가능하다.
- Modal
이 특정 윈도우를 종료해야 다른 윈도우와 상호작용할 수 있다.
모달 방식의 윈도우는 간단한 경우가 대다수이다.
이러한 윈도우를 보통 대화창 (dialog)라고 한다.
노드
이제 우리가 윈도우들을 만들고 그 윈도우들을 우리가 원하는 대로 꾸밀 것이다.
이때 화면을 꾸미기 위한 요소들을 컴포넌트 혹은 노드라고 한다.
노드는 크게 기본 노드와 컨테이너 노드로 분류가 된다.
여기서 컨테이너 노드는 다른 노드들을 내부에 포함할 수 있는 노드들을 말한다.
우리는 컨테이너 노드를 만들고 또 다른 컨테이너 노드들을 넣어 화면을 구성하게 된다.
화면에 나타나는 노드들을 전첵적으로 그래프로 나타낼수 있다.
이때 가장 꼭대기에 최상위 컨테이너가 하나 있을 것이다.
그 컨테이너는 화면을 여러 영역으로 나눌 것이고,
하나의 영역에은 하나의 노드만 들어갈 수 있다.
(=> 이름이 같다고 해서 재사용이 불가능하다는 뜻, 새로 만들어야됨)
여러가지 노드를 만들기 위해서는 새로운 컨테이너를 만들어야 한다.
자바 Fx에서는 Stage가 가장 최상위 컨테이너이며, Stage는 항상 Scene을 가지고
나머지 노드들은 Scene 노드들의 하위 노드로 추가된다.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
public class Hello extends Application {
@Override
public void start(Stage mainStage) throws Exception {
Label myLabel = new Label("Hello, World");
myLabel.setFont(Font.font("Arial", FontWeight.BOLD, 16));
StackPane pane = new StackPane();
pane.getChildren().add(myLabel);
mainStage.setTitle("JavaFX Hello World App");
mainStage.setScene(new Scene(pane, 500d, 100d));
mainStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
위 코드는 Hello, World를 출력하는 Java Fx 프로그램이다.
우선 꼭해야하는 것들은 두 가지이다.
1. 사용할 클래스에 Application 클래스를 상속받을 것
2. main 함수안에 프로그램을 실행하는 Application.launch(args); 를 사용할 것
그 다음에는 start 함수를 재정의 해주어야 한다.
이때 인자로 나타나는 윈도우의 stage를 사용하게 된다.
start 함수 안에서는 꾸며주기만 하면 된다.
- setTitle() : 창의 제목을 설정해주는 함수이다.
- setScene() : 윈도우의 초기 크기를 결정해주는 함수이다.
- show() : 화면에 윈도우를 보여주는 함수이다.
최상위 컨테이너로 StackPane을 사용하고 있다.
Lable을 추가하였고 setScene()에서 이것을 Scene으로 설정하여 출력하고 있다.
컨테이너 노드에 노드를 추가할 때는, 이름을 부르고 .getChidren().add()를 하여 추가해준다.
추가하는 순서가 매우 중요하다. 순서대로 보여주기 때문이다.
'Java언어 공부' 카테고리의 다른 글
[Java] 13. 자바의 원시 타입 (1) (0) | 2023.09.28 |
---|---|
[Java] 9. 상속과 구체화 (1) (0) | 2023.09.26 |
[Java] 8. 클래스(2) (0) | 2023.09.22 |
[Java] 7. 클래스 (0) | 2023.09.18 |
[Java] 6. 객체 소개(2) (0) | 2023.09.15 |