专栏首页javafx框架tornadofx来做个小工具:汉字转拼音
原创

来做个小工具:汉字转拼音

import com.rnkrsoft.bopomofo4j.Bopomofo4j
import javafx.geometry.Pos
import tornadofx.*

class Bopomofo4jApp : App(Bopomofo4jView::class)
class Bopomofo4jView : View("汉字转拼音") {
    val initStr="""
        我们中国的汉字
落笔成画留下五千年的历史
让世界都认识
我们中国的汉字
一撇一捺都是故事
跪举火把虔诚像道光
四方田地落谷成仓
古人象形声意辨恶良
魃魈魁鬾魑魅魍魉
bá xiāo kuí jì chī mèi wǎng liǎng
Wu 又双叒叕
Wu yòu shuāng ruò zhuó
Wu 火炎焱燚
Wu huǒ yán yàn yì
Wu 水沝淼㵘
Wu shuǐ zhuǐ miǎo màn
㙓
kuí bǎo
茕茕孑立 沆瀣一气
踽踽独行 醍醐灌顶
jǔ jǔ dú xíng tí hú guàn dǐng
绵绵瓜瓞 奉为圭臬
mián mián guā dié fèng wéi guī niè
龙行龘龘 犄角旮旯
lóng xíng dá dá jī jiǎo gā lá
娉婷袅娜 涕泗滂沱
pīng tíng niǎo nuó tì sì pāng tuó
呶呶不休 不稂不莠
náo náo bù xiū bù láng bù yǒu
卬
áng
咄嗟 蹀躞 耄耋 饕餮
duō jiē dié xiè mào dié tāo tiè
囹圄 蘡薁 觊觎 龃龉
líng yǔ yīng yù jì yú jǔ yǔ
狖轭鼯轩 怙恶不悛
yòu è wú xuān hù è bù quān
其靁虺虺 腌臢孑孓
陟罚臧否 针砭时弊
鳞次栉比 一张一翕
我们中国的汉字
落笔成画留下五千年的历史
让世界都认识
我们中国的汉字
一撇一捺都是故事
现在全世界各地
到处有中国字
黄皮肤的人骄傲地把头抬起
我们中国的汉字
一平一仄谱写成诗
茕茕孑立 沆瀣一气
hàng xiè yī qì
踽踽独行 醍醐灌顶
绵绵瓜瓞 奉为圭臬
龙行龘龘 犄角旮旯
娉婷袅娜 涕泗滂沱
呶呶不休 不稂不莠
咄嗟 蹀躞 耄耋 饕餮
囹圄 蘡薁 觊觎 龃龉
狖轭鼯轩 怙恶不悛
其靁虺虺 腌臢孑孓
qí léi huī huī ā zā jié jué
陟罚臧否 针砭时弊
鳞次栉比 一张一翕
我们中国的汉字
落笔成画留下五千年的历史
让世界都认识
我们中国的汉字
一撇一捺都是故事
现在全世界各地
到处有中国字
黄皮肤的人骄傲地把头抬起
我们中国的汉字
一平一仄谱写成诗
优美旋律自宫商角徵羽
众人皆说成之于语故成语
    """.trimIndent()
    val hz = stringProperty(initStr)
    val py = stringProperty()
    val ydType = intProperty(0)
    override val root = borderpane {
        paddingAll = 10.0
        top = hbox(10) {
            alignment = Pos.CENTER
            paddingBottom=10.0
            togglegroup {
                val tg = this
                selectedToggleProperty().onChange {
                    ydType.value = tg.selectedToggle.userData as Int
                    when (ydType.value) {
                        in (0..2) -> {
                            hz2py(ydType = ydType.value)
                        }
                        3 -> runAsync {
                            Bopomofo4j.local()
                            py.value = Bopomofo4j.cht2chs(hz.value)
                        }
                        4 -> runAsync {
                            Bopomofo4j.local()
                            py.value = Bopomofo4j.chs2cht(hz.value)
                        }
                    }
                }
                radiobutton("声母音调") {
                    userData = 0
                    isSelected = true
                }
                radiobutton("数字音调") { userData = 1 }
                radiobutton("无音调") { userData = 2 }
                radiobutton("繁体->简体") { userData = 3 }
                radiobutton("简体->繁体") { userData = 4 }
            }
            button("开始转换") {
                action {
                    hz2py(hz.value)
                }
            }
        }

        center = hbox(10) {
            vbox(10) {
                label("汉字")
                textarea(hz) {
                    prefHeight=700.0
                    isWrapText = true
                    contextmenu {
                        item("转换所有").action {
                            hz2py(ydType = ydType.value)
                        }
                        item("转换选中").action {
                            hz2py(selectedText, ydType.value)
                        }
//                        item("转换当前行").action {
//                            hz2py(text, ydType.value)
//                        }
                    }
                }
            }
            vbox(10) {
                label("拼音")
                textarea(py) {
                    prefHeight=700.0
                    isWrapText = true
                }
            }
        }
    }

    private fun hz2py(hzstr: String = hz.value, ydType: Int = 0) {
        runAsync {
            Bopomofo4j.local()
            py.value = Bopomofo4j.pinyin(hzstr, ydType, false, false, " ")
        }
    }
}

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 再来做个小工具,简易计算器,用到了jfinal enjoy,140行代码不到

    用户6167008
  • 使用javafx框架tornadofx制作的ip地址定位小工具

    使用https://gitee.com/lionsoul/ip2region 中的数据库

    用户6167008
  • javafx框架tornadofx实战-舒尔特4-左侧列表数据构建函数变更

    用户6167008
  • 使用朝鲜自主研发的操作系统是什么体验?

    来源:新浪科技德国两位研究人员揭秘了朝鲜国产操作系统红星的样子。结果显示,该操作系统有着OS X的界面,Linux的内核以及朝鲜自己的安全机制。 ? 本周日,...

    编程范 源代码公司
  • MySQL基础篇(07):用户和权限管理,日志体系简介

    在数据库的使用过程中,用户作为访问数据库的鉴权因素,起到非常重要的作用,安装MySQL时会自动生成一个root用户,作为数据库管理员,拥有所有权限。在多用户的应...

    知了一笑
  • Java日志体系(log4j)

    贾博岩
  • CSS3 animation steps介绍

    steps()有一定的学习难度,总是搞不清楚,最主要就是start和end傻傻分不清楚。我这里自我挑战下,看看能不能说清楚。

    javascript.shop
  • log4j.xml 日志只输出指定类配置

    1、日志增加appender 指定日志生成时间、格式、间隔时间。 2、category指定哪些或哪个类日志生成在文件中。 3、自定义logger避免不要将use...

    杉枫
  • 使用滴滴mpx 开发一个小程序组件

    yangdongnan
  • Linux makefile使用基础

    makefile就像一个Bash脚本,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程...

    xxpcb

扫码关注云+社区

领取腾讯云代金券