首页IT科技javafx插件式框架(JavaFx 页面和控件设置快捷键)

javafx插件式框架(JavaFx 页面和控件设置快捷键)

时间2025-06-20 19:05:56分类IT科技浏览3307
导读:原文:JavaFx 页面和控件设置快捷键 - Stars-One的杂货小窝...

原文:JavaFx 页面和控件设置快捷键 - Stars-One的杂货小窝

之前说过一篇window系统全局快捷键的设置          ,本期主要是讲解JavaFx应用程序的快捷键设置                  ,还是有所区别的

这里主要是Tornadofx为例进行讲解      ,以Kotlin语言为例       ,由于比较简单                  ,就不贴截图了         ,下面例子都是自己测试成功的

使用

看网上的一篇文章    ,说是有5钟方法                 ,实际上只有3种方法            ,他提及的5种方法实际上有两种只是构造生成KeyCodeCombination对象不同而已

设置快捷键的方法主要就是通过scene对象的方法和KeyCodeCombination快捷键参数来进行设置的

1.addMnemonic方法

通过addMnemonic()方法  ,可以为按钮设置快捷键                ,当触发快捷键后               ,会执行按钮的action操作

class ShoetCutDemoView : View("My View") { var btn by singleAssign<Button>() override val root = vbox { setPrefSize(700.0, 400.0) btn = button("测试1") { action{ println("按下了按钮") } } } override fun onBeforeShow() { test1() } fun test1() { //快捷键ctrl+alt+c val kc1 = KeyCodeCombination(KeyCode.C, KeyCombination.ALT_DOWN, KeyCombination.CONTROL_DOWN) val mnemonic1 = Mnemonic(btn, kc1) currentWindow?.scene?.addMnemonic(mnemonic1) } }

注意:这里由于Tornadofx里的View对象是存在这对应的生命周期,所以设置快捷键不能再root里面布局里写             ,因为此时还没有形成对应的scene对象

要在onBeforeShow()方法里或者是在事件里设置快捷键(如按钮的点击事件                  ,鼠标点击事件等)

为了方便阅读   ,下面贴出的代码例子均是在onBeforeShow()里调用方法          ,之后不再赘述

2.accelerators方法

通过accelerators方法                  ,为当前的窗口页面设置快捷键      ,只有焦点处于当前窗口页面       ,按下快捷键才能触发

fun test2() { //快捷键ctrl+v val kc1 = KeyCodeCombination(KeyCode.V, KeyCombination.CONTROL_DOWN) currentWindow?.scene?.apply { accelerators[kc1] = Runnable { println("快捷键CTRL + V") } } }

3.addEventFilter方法

通过addEventFilter()方法                  ,为当前的窗口页面设置快捷键         ,只有焦点处于当前窗口页面    ,按下快捷键才能触发

fun test3() { val kc1 = KeyCodeCombination(KeyCode.V, KeyCombination.CONTROL_DOWN) currentWindow?.addEventFilter(KeyEvent.KEY_PRESSED) { event -> if (kc1.match(event)) { println("按下了快捷键          。                  。") } } }

补充-生成KeyCodeCombination的几种方法

下面的快捷键都是ctrl+v的示例代码:

val kc1 = KeyCodeCombination(KeyCode.V, KeyCombination.CONTROL_DOWN) //这个类不怎么用                 ,用法和KeyCodeCombination类似            ,但看文档也没太明白这两者有什么区别.. val kc1 = KeyCharacterCombination("V", KeyCombination.CONTROL_DOWN) //下面这两个用法一样 val kc1 = KeyCombination.keyCombination("ctrl+v") val kc1 = KeyCombination.valueOf("ctrl+v") //如果是mac  ,可以用meta这个 val kc1 = KeyCombination.valueOf("Meta+v")

这里看了文档也没搞懂为什么要用KeyCombination.CONTROL_DOWN这个用法                ,就先固定着用吧

KeyCombination.CONTROL_DOWN Ctrl键 KeyCombination.SHIFT_DOWN Shift键 KeyCombination.META_DOWN Meta键 KeyCombination.ALT_DOWN Alt键 KeyCombination.SHORTCUT_DOWN 测试发现也是Ctrl键               ,不太明白这个..

参考

【笔记】javafx设置快捷键_五种方法_ccOCONuTT的博客-CSDN博客 JavaFX视频教程第11课,设置快捷键_哔哩哔哩_bilibili KeyCodeCombination (JavaFX 8官方文档) KeyCode (JavaFX 8) Overview List (JavaFX 8)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
snow应用(SnowNLP使用自定义语料进行模型训练(情感分析))