JavaFx 页面和控件设置快捷键

科技资讯 投稿 6100 0 评论

JavaFx 页面和控件设置快捷键

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

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

使用

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(方法里或者是在事件里设置快捷键(如按钮的点击事件,鼠标点击事件等)

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 页面和控件设置快捷键

赞同 (35) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽