Loading

javafx 入门到放弃

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()

//

持续更

posted @ 2024-02-24 20:35  ayunti  阅读(57)  评论(0)    收藏  举报