Kotlin+JavaFx实现动态按钮改变窗体标题

1、技术简要

  • 当前工程使用JDK1.8.0_191

  • JavaFX 是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包

  • Kotlin 编程语言 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 社区设计开发并开源

  • Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具,Gradle优越前者2个,具有Groovy编程语言的DSL语法

2、新建工程

  • 打开开发工具新建项目,这里以idea为例
  • File - -> new --> Project --> New Project

3、工程结构

4、bulid.gradle配置

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.5.10'
}
group 'com.rub'
version '1.0-SNAPSHOT'

//定义Groovy变量
def jdkVersion = JavaVersion.VERSION_1_8

//设置仓库地址
repositories {
    maven { url 'http://maven.aliyun.com/repository/google/' }
    maven { url 'http://maven.aliyun.com/repository/jcenter/' }
    mavenCentral()
    mavenLocal()
}
//工程jar依赖配置
dependencies {
    //kotlin标准类库jar
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    //kotlin反射需要的jar
    implementation "org.jetbrains.kotlin:kotlin-reflect"
   
}

//设置kotlin编译版本
[compileKotlin, compileTestKotlin].forEach {
    it.kotlinOptions {
        jvmTarget = jdkVersion
    }
}

//设置编译编码
[compileJava, javadoc, compileTestJava]*.options*.encoding = "UTF-8"

5、代码实现

import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.control.Button
import javafx.scene.layout.AnchorPane
import javafx.scene.layout.HBox
import javafx.stage.Stage
class HelloWorldApp : Application() {
    override fun start(stage: Stage?) {
        val prim = stage!!  //!!表示告诉kotlin编辑器,此值不要检查了。
        val hBox = HBox() //创建HBox
        val anchorPane = AnchorPane().apply { children.add(hBox) }
        val scene = Scene(anchorPane)
        prim.apply {
            this.scene = scene
            title = "HelloWorld"
            width = 300.0 //设置窗体宽度
            height = 500.0 //设置窗体高度
            show()//窗体显示
        }
        //设置动态按钮,通过按钮事件进行改变窗体的title
        arrayOf("a", "b", "c").forEach {
            hBox.children.add(Button("按钮${it}").apply {
                setOnAction { prim.title = this.text }
            })
        }
    }
}
//Kotlin的运行main方法,::class.java使用到反射
fun main() = Application.launch(HelloWorldApp::class.java)

6、运行效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章