hello-world
예 : https://github.com:JetBrains/kotlin-examples.git으로 시작하여 TornadoFX를 사용하도록 수정했습니다.tornadofx 앱에서 observableArrayList에 바인딩 된 항목을 필터링 할 수 있도록보기를 리팩터링하는 방법
항목 목록을 표시하는 앱입니다. 목록에 추가하면 RequestView
이 자동으로 모든 항목을 표시합니다.
저장된 항목이 observableArrayList
에 바인딩되도록 노력하고 있지만 이제는 하단에 TextView
을 사용하여 필터를 구현하고 싶습니다. 그러나 이것이 의미하는 바는 내부적으로 RequestView
에서 관리되는 새 목록을 만들어야한다는 것을 의미하는지, 필터를 사용하는지 또는 어떻게 수행 할지를 이해하는 데 어려움을 겪고 있습니다.
package demo
import javafx.collections.FXCollections
import javafx.geometry.Pos
import javafx.scene.control.TextField
import javafx.scene.layout.VBox
import javafx.scene.text.FontWeight
import tornadofx.*
class helloWorldApp : App(HelloWorld::class) {
}
class HelloWorld : View() {
override val root = VBox()
var requestView: RequestView by singleAssign()
var filterField: TextField by singleAssign()
init {
with(root) {
requestView = RequestView()
this += requestView
filterField = TextField()
this += filterField
}
requestView.items.add("Hi there")
requestView.items.add("Another one")
}
}
class RequestView() : View() {
var items = FXCollections.observableArrayList<String>()
override val root = listview(items) {
cellFormat {
graphic = cache {
form {
fieldset {
label(it) {
alignment = Pos.CENTER_LEFT
style {
fontSize = 15.px
fontWeight = FontWeight.BOLD
}
}
}
}
}
}
}
}
다음은 도움이 될만한 경우에 해당하는 build.gradle 파일입니다.
buildscript {
ext.kotlin_version = '1.1.2'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
apply plugin: 'application'
mainClassName = 'demo.helloWorldApp'
defaultTasks 'run'
repositories {
mavenCentral()
}
tasks.compileKotlin.kotlinOptions.jvmTarget = "1.8"
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile 'junit:junit:4.11'
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
compile 'no.tornado:tornadofx:1.7.10'
}
task wrapper(type: Wrapper) {
gradleVersion = "2.7"
}