JavaFx 页面和控件设置快捷键(javafx怎么进行页面跳转)

  本篇文章为你整理了JavaFx 页面和控件设置快捷键(javafx怎么进行页面跳转)的详细内容,包含有javafx界面 javafx怎么进行页面跳转 javafx实现页面切换 javafx menubar JavaFx 页面和控件设置快捷键,希望能帮助你了解 JavaFx 页面和控件设置快捷键。

  原文: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("按下了快捷键。。")

  

 

  PS: 上面2和3方法看似是一样,但是第3种方法在快捷键冲突的情况下也会执行

  比如说上面我们是设置了ctrl+v的快捷键,如果当页面存在有一个输入框textfield,此时你按下ctrl+v,此时两种方法的情况如下:

  accelerators: 输入框里粘贴了文本,没有触发我们设置的快捷键功能

  addEventFilter: 输入框粘贴了文本,且触发了我们设置的快捷键功能

  补充-生成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)

  以上就是JavaFx 页面和控件设置快捷键(javafx怎么进行页面跳转)的详细内容,想要了解更多 JavaFx 页面和控件设置快捷键的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: