javafx从入门到放弃
构建配置 build.gradle.kts
//使用javafx插件,不用添加依赖了
plugins {
kotlin("jvm")
id("org.openjfx.javafxplugin") version "0.0.7"
}
//版本配置和模块配置
javafx {
version = "17"
modules = listOf("javafx.controls")
}
创建ui程序
import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.control.Label
import javafx.stage.Stage
class AppStart : Application() {
override fun start(p0: Stage) {
//标题
p0.title="test javafx use kotlin"
val doc = Label("hi word")
//场景
p0.scene = Scene(doc)
//窗口大小
p0.width=200.0
p0.height=200.0
p0.show()
}
}
fun main() {
Application.launch(AppStart::class.java)
}
完成上面步骤就可以运行一个简单的桌面程序了
javafx框架 tornadofx
javafx 配合kotlin 已经很好用了,使用tornadofx可以更简单.
作者不推荐使用fxml,优点只有快速预览,但是实操不如直接写代码
//启动ui,tornadofx中的App 对象继承Javafx 的Application
class AppStart : App(Index::class)
fun main()
{
Application.launch(AppStart::class.java)
}
//Index,可以使用dsl编写
class Index : View() {
override val root = borderpane {
title = "test tornadofx"
prefWidth = 800.0
prefHeight = 600.0
center = button(v) {
action {
println("hi")
}
}
}
}
//数据绑定:
val a = SearchTaskInfo()
a.keyword = "sf"
//tornadofx 所有对象都扩展了一个方法 observable
//改变v的值 对象a.keyword的值也会改变,场景:数据库对象可以直接转换成ui对象,原对象值也会改变
val v = a.observable(SearchTaskInfo::keyword)
// 对比 javafx 原生转换
val v=JavaBeanObjectPropertyBuilder.create().bean(a).name("keyword").build()
//