前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用javafx框架tornadofx制作的成语字典小工具

使用javafx框架tornadofx制作的成语字典小工具

原创
作者头像
用户6167008
修改2019-11-12 11:08:24
9740
修改2019-11-12 11:08:24
举报

使用borderpane布局,left部分包括一个用于输入查寻关键字的文本框、查询清空按键和26个英文字母按钮,center部分一个tableview,显示查寻结果;bottom采用label显示操作信息。

使用https://gitee.com/xwintop/xJavaFxTool 中的数据库

定义字典model:

class Idiom {
    val wordProperty = stringProperty("")
    var word by wordProperty

    val pinyinProperty = stringProperty()
    var pinyin by pinyinProperty

    val explanationProperty = stringProperty()
    var explanation by explanationProperty

    val derivationProperty = stringProperty()
    var derivation by derivationProperty


    val exampleProperty = stringProperty()
    var example by exampleProperty
}

class IdiomViewModel : ItemViewModel<Idiom>() {
    val word = bind(defaultValue = "") { item?.wordProperty }
    val pinyin = bind { item?.pinyinProperty }
    val explanation = bind { item?.explanationProperty }
    val derivation = bind { item?.derivationProperty }
    val example = bind { item?.exampleProperty }
}

UI:

class IdiomDataTool : View("成语字典") {
    val C: IdiomController by inject()
    val idiomVM: IdiomViewModel by inject()
    val index1 = stringProperty("")
    val index2 = stringProperty("")
    val index3 = stringProperty("")
    val index4 = stringProperty("")
    val selectWord = stringProperty("")
    val tfs = listOf(index1, index2, index3, index4, selectWord)

    override val root = borderpane {
        paddingAll = 10.0
        left = vbox(4) {
            prefWidth = 250.0
            vbox(4) {
                label("模糊查询")
                textfield(selectWord) { promptText = "输入查询的成语字段" }
                hbox(10) {
                    button("查询") {
                        action {
                            C.selectAction(selectWord.value)
                        }
                    }
                    button("清空") {
                        action {
                            C.clearAction(tfs)
                        }
                    }
                }
            }
            flowpane {
                hgap = 4.0
                vgap = 4.0
                "abcdefghijklmnopqrstuvwxyz".toCharArray().forEach {
                    button("$it") {
                        setPrefSize(40.0, 40.0)
                        style {
                            fontSize = 16.px
                        }
                        action {
                            selectWord.value = selectWord.value.plus(it)
                        }
                    }
                }
            }
        }
        center = tableview(C.idioms) {
            column("词目", Idiom::wordProperty).makeEditable()
            column("发音", Idiom::pinyinProperty).makeEditable()
            column("释义", Idiom::explanationProperty).makeEditable()
            column("出处", Idiom::derivationProperty).makeEditable()
            column("示例", Idiom::exampleProperty).makeEditable()
            bindSelected(idiomVM)
            onUserSelect(1) {
                C.msg.value = "查寻到${C.count.value}条记录。${idiomVM.word.value} :${idiomVM.explanation.value}"
//                tooltip(idiomVM.derivation.value)
            }
            smartResize()
        }
        bottom = hbox {
            paddingTop=5.0
            label(C.msg)
        }
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档