TornadoFX는 자바 가상머신에서 실행되는 데스크톱용 GUI를 손쉽게 구성하도록 도움을 주는 라이브러리입니다. 기본적으로 자바 SDK에 포함된 JavaFX를 이용하고 있습니다. HelloWorldFX 프로젝트로 자동 생성된 소스 코드들을 살펴봅시다.
MainView의 실행
TornadoFX로 프로젝트를 만들면 기본 진입점이 MyApp이 되며 여기에 기본적으로 생성된 MainView 클래스가 지정되어 있습니다.
class MainView : View("Hello TornadoFX") {
override val root = hbox {
label(title) {
addClass(Styles.heading)
}
}
}
class MyApp: App(MainView::class, Styles::class)
위에서 MyView의 root는 hbox는 레이아웃의 parent가 되고 그 안에 GUI요소인 label이 들어가는 형태입니다. 이것은 JavaFX의 VBox, HBox에 해당하는 것이지요. 이렇게 람다식과 확장함수로 설계되어 읽기 좋은 코딩을 지원해 주고 있는데 이것은 코틀린의 DSL(Domain Specific Language)을 사용해 손쉽게 만들 수 있기 때문입니다.
UI의 스타일
스타일은 인라인으로 작성하거나 별도의 클래스로 분리해 작성할 수 있습니다. tornadofx.Stylesheet 클래스를 상속해 다음과 같은 스타일 클래스를 작성할 수 있습니다.
import javafx.scene.text.FontWeight
import tornadofx.Stylesheet
import tornadofx.box
import tornadofx.cssclass
import tornadofx.px
class Styles : Stylesheet() {
companion object {
val heading by cssclass()
}
init {
label and heading {
padding = box(10.px)
fontSize = 20.px
fontWeight = FontWeight.BOLD
}
}
}
여기서는 label과 heading에 대한 스타일을 지정하고 있습니다.
간단한 버튼 넣기
간단한 버튼 요소를 넣어보겠습니다. 버튼은 tornadofx.button 함수로 생성하며, 빌딩 블록 안에 action 블록을 추가해, 눌렀을 때 액션을 정의할 수 있습니다. tornadofx.information 함수는 팝업을 띄워 확인할 수 있습니다.
class MainView : View("Hello TornadoFX") {
override val root = hbox {
label(title) {
addClass(Styles.heading)
}
button("Press Button") {
action {
information("Thank you!")
}
}
}
}
더 많은 내용은 첨부되는 가이드를 꼭 확인하세요!
comment