JavaFX Platform ν΄λμ€
μ£Όμ λ©μλ μ 리
κ°μ
β’
ν¨ν€μ§: javafx.application.Platform
β’
μν :
JavaFX μ ν리μΌμ΄μ
μ μ€λ λ μ μ΄, μ’
λ£, UI μμ
μμ½ λ±μ κ΄λ¦¬νλ ν΄λμ€
(λͺ¨λ λ©μλλ static)
JavaFX Application Thread(λ©μΈ UI μ€λ λ)μμ μ€νλλ μμ
μ μ μ΄νκΈ° μν΄ μ¬μ©νλ€.
μ£Όμ λ©μλ
1. runLater(Runnable runnable)
β’
μ€λͺ
:
μ§μ ν μμ
μ JavaFX Application Threadμμ λμ€μ μ€ννλλ‘ μμ½νλ€.
β’
μ©λ:
UIκ° μμ ν μ΄κΈ°νλ νμ μ€ννκ±°λ, λ°±κ·ΈλΌμ΄λ μ€λ λμμ UIλ₯Ό μμ ν λ μ¬μ©.
β’
μμ:
Platform.runLater(() -> {
label.setText("UI λ³κ²½ μλ£!");
});
Java
볡μ¬
2. exit()
β’
μ€λͺ
:
JavaFX μ ν리μΌμ΄μ
μ μ’
λ£νλ€.
λ΄λΆμ μΌλ‘ λͺ¨λ μλμ°(Stage)λ₯Ό λ«κ³ Application.stop() λ©μλλ₯Ό νΈμΆνλ€.
β’
μμ:
Platform.exit();
Java
볡μ¬
3. startup(Runnable runnable)
β’
μ€λͺ
:
JavaFX λ°νμμ΄ μμ§ μμλμ§ μμ μνμμ λͺ
μμ μΌλ‘ μ΄κΈ°νν λ μ¬μ©.
(μΌλ°μ μΌλ‘ Application.launch() μ΄μ μ JavaFX κΈ°λ₯μ μ¬μ©νλ €λ κ²½μ°)
β’
μμ:
Platform.startup(() -> {
System.out.println("JavaFX λ°νμ μ΄κΈ°ν μλ£");
});
Java
볡μ¬
4. isFxApplicationThread()
β’
μ€λͺ
:
νμ¬ μ½λκ° JavaFX Application Threadμμ μ€ν μ€μΈμ§ νμΈνλ€.
β’
μμ:
if (Platform.isFxApplicationThread()) {
System.out.println("UI μ€λ λμ
λλ€!");
} else {
System.out.println("λ°±κ·ΈλΌμ΄λ μ€λ λμ
λλ€!");
}
Java
볡μ¬
5. setImplicitExit(boolean implicitExit)
β’
μ€λͺ
:
λͺ¨λ Stageκ° λ«νμ λ μλμΌλ‘ μ ν리μΌμ΄μ
μ μ’
λ£ν μ§ μ¬λΆλ₯Ό μ€μ νλ€.
β¦
true (κΈ°λ³Έκ°): λͺ¨λ μ°½μ΄ λ«νλ©΄ μ’
λ£
β¦
false: μ°½μ΄ λ«νλ λ°±κ·ΈλΌμ΄λ μ μ§
β’
μμ:
Platform.setImplicitExit(false);
Java
볡μ¬
μμ½ λΉκ΅ν
λ©μλ | μ£Όμ κΈ°λ₯ | μ¬μ© μμ |
runLater() | UI μ€λ λμμ λμ€μ μ€ν | UI μ΄κΈ°ν ν, λ°±κ·ΈλΌμ΄λ β UI |
exit() | μ ν리μΌμ΄μ
μ’
λ£ | νλ‘κ·Έλ¨ μ’
λ£ λ²νΌ λ± |
startup() | JavaFX λ°νμ μλ μ΄κΈ°ν | λΉνμ€ νκ²½, ν
μ€νΈ νκ²½ |
isFxApplicationThread() | νμ¬ μ€λ λ νμΈ | λλ²κΉ
/ μμ μ± νμΈ |
setImplicitExit() | μλ μ’
λ£ μ¬λΆ μ€μ | νΈλ μ΄ μ±, λ€μ€ μ°½ μ± λ± |
μ€λ¬΄ ν
β’
initialize() μμμ Platform.runLater() μ¬μ©νλ©΄ UI μ€λΉ ν μ€ν κ°λ₯
β’
κΈ΄ μ°μ°(νμΌ μ½κΈ°, DB 쿼리)μ Taskλ Serviceμμ μ²λ¦¬νκ³ ,
κ²°κ³Όλ₯Ό Platform.runLater()λ‘ UIμ λ°μνλ€.
β’
Platform.exit()λ System.exit(0)λ³΄λ€ μμ νκ² μ’
λ£λ¨ (μμ ν΄μ ν¬ν¨)
μμ μ½λ
Platform.runLater(() -> {
System.out.println("UI μ€λ λμμ μμ νκ² μ€ν!");
});
if (!Platform.isFxApplicationThread()) {
Platform.runLater(() -> myLabel.setText("UI λ³κ²½"));
}
Platform.setImplicitExit(false); // μ°½ λ«νλ μ± μ μ§
Java
볡μ¬
Platform ν΄λμ€λ JavaFX μ ν리μΌμ΄μ
μ βμλͺ
μ£ΌκΈ° μ μ΄μβμ΄μ
βUI μ€λ λ 보μ κ΄λ¦¬μβ μν μ νλ€.
νΉν runLater()λ μ€λ¬΄μμ κ°μ₯ λ§μ΄ μ°μ΄λ λ©μλλ‘,
λͺ¨λ UI μ
λ°μ΄νΈλ₯Ό μμ νκ² μ€νν μ μκ² ν΄μ€λ€.



