Difference between revisions of "컴퓨터프로그래밍및실습 (2022년)/1128"
Jump to navigation
Jump to search
Line 23: | Line 23: | ||
== JavaFX 애플리케이션 개발 시작 == | == JavaFX 애플리케이션 개발 시작 == | ||
[[file:CP2022_ch17.2_AppMain.png|thumb|AppMain 실행화면]] | |||
<syntaxhighlight lang="java"> | |||
import javafx.application.Application; | |||
import javafx.application.Platform; | |||
import javafx.geometry.Pos; | |||
import javafx.scene.Scene; | |||
import javafx.scene.control.Button; | |||
import javafx.scene.control.Label; | |||
import javafx.scene.layout.VBox; | |||
import javafx.scene.text.Font; | |||
import javafx.stage.Stage; | |||
public class AppMain extends Application { | |||
@Override | |||
public void start(Stage primaryStage) throws Exception { | |||
VBox root = new VBox(); | |||
root.setPrefWidth(350); | |||
root.setPrefHeight(150); | |||
root.setAlignment(Pos.CENTER); | |||
root.setSpacing(20); | |||
Label label = new Label(); | |||
label.setText("Hello, JavaFX"); | |||
label.setFont(new Font(50)); | |||
Button button = new Button(); | |||
button.setText("확인"); | |||
button.setOnAction(event->Platform.exit()); | |||
root.getChildren().add(label); | |||
root.getChildren().add(button); | |||
Scene scene = new Scene(root); | |||
primaryStage.setTitle("AppMain입니다"); | |||
primaryStage.setScene(scene); | |||
primaryStage.show(); | |||
} | |||
@Override | |||
public void stop() throws Exception { | |||
System.out.println(Thread.currentThread().getName() + ":stop() 호출"); | |||
} | |||
public static void main(String[] args) { | |||
launch(args); | |||
} | |||
} | |||
</syntaxhighlight> | |||
== JavaFX 레이아웃 == | == JavaFX 레이아웃 == |
Revision as of 20:16, 20 July 2022
JavaFX 개요
- AWT
- Native UI 컴포넌트 사용
- 운영체제 마다 UI 모양이 다름
- Swing
- 운영체제가 제공하는 native UI 사용 안 함
- 운영체제가 새롭게 제공하는 UI 지원의 어려움
- JavaFX
- Abode의 flash, Microsoft의 silverlight의 대항마
- JDK 7부터 지원. JDK 8 권장.
- JDK 11부터는 별도로 설치해야 함.
- 화면 레이아웃과 스타일, 애플리케이션 로직 분리
- Java 코드와 분리해서 스타일 시트(CSS)로 외관 작성 → 개발자와 디자이너의 동시 개발 가능
- Java 코드에서도 레이아웃과 애플리케이션 로직을 분리하고 싶다면 레이아웃은 FXML로 작성, 로직은 Java로 작성
- JavaFX 애플리케이션 구성 요소
[레이아웃] 자바 코드 파일 또는 FXML 파일 |
[외관 및 스타일] CSS 파일 |
[리소스] 그림 파일 동영상 파일 ... |
[비즈니스 로직] 자바 코드 파일 |
JavaFX 애플리케이션 개발 시작
import javafx.application.Application;
import javafx.application.Platform;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class AppMain extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
VBox root = new VBox();
root.setPrefWidth(350);
root.setPrefHeight(150);
root.setAlignment(Pos.CENTER);
root.setSpacing(20);
Label label = new Label();
label.setText("Hello, JavaFX");
label.setFont(new Font(50));
Button button = new Button();
button.setText("확인");
button.setOnAction(event->Platform.exit());
root.getChildren().add(label);
root.getChildren().add(button);
Scene scene = new Scene(root);
primaryStage.setTitle("AppMain입니다");
primaryStage.setScene(scene);
primaryStage.show();
}
@Override
public void stop() throws Exception {
System.out.println(Thread.currentThread().getName() + ":stop() 호출");
}
public static void main(String[] args) {
launch(args);
}
}