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("按下了快捷键。。")
}
}
}
补充-生成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_DOWNCtrl键KeyCombination.SHIFT_DOWNShift键KeyCombination.META_DOWNMeta键KeyCombination.ALT_DOWNAlt键KeyCombination.SHORTCUT_DOWN测试发现也是Ctrl键,不太明白这个..
参考
- 【笔记】javafx设置快捷键_五种方法_ccOCONuTT的博客-CSDN博客
- JavaFX视频教程第11课,设置快捷键_哔哩哔哩_bilibili
- KeyCodeCombination (JavaFX 8官方文档)
- KeyCode (JavaFX 8)
- Overview List (JavaFX 8)
JavaFx 页面和控件设置快捷键的更多相关文章
- 【转】给Winform的button等控件添加快捷键
ref: http://blog.sina.com.cn/s/blog_4cb9953f0100cy4z.html 第一种:Alt + *(按钮快捷键) 在大家给button.label.menuSt ...
- C# WinForm给Button按钮或其它控件添加快捷键响应
就在这介绍三种添加快捷键的方式. 第一种Alt + *(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在名字后边加&键名就可以了,比如button1 ...
- Xamarin自定义布局系列——PivotPage,多页面切换控件
PivotPage ---- 多页面切换控件 PivotPage是一个多页面切换控件,类似安卓中的ViewPager和UWP中的Pivot枢轴控件. 起初打算直接通过ScrollView+StackL ...
- C# WinForm给Button或其它控件添加快捷键响应
今天做东西遇到要给按钮添加快捷键.就在这介绍三种添加快捷键的方式. 第一种Alt + *(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在名字后边加& ...
- Winform中在使用Dock属性设计页面布局控件的顺序导致页面效果不同的问题
场景 在Winform中进行页面设计时,常使用控件的Dock属性来进行布局调整.但是由于设置属性的顺序问题,导致达不到想要的效果. 比如以下两个控件 下面的控件设置的Dock属性是Bottom,即在页 ...
- C#如何给WinForm的button等控件添加快捷键
网上有三种方法来设置快捷键,经本人验证后得出最优方法 Alt+*(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在后边加&键 名就可以了,比如b ...
- Android Material适配 为控件设置指定背景色和点击波纹效果
Android Material适配 为控件设置指定背景色和点击波纹效果,有需要的朋友可以参考下. 大部分时候,我们都需要为控件设置指定背景色和点击效果 4.x以下可以使用selector,5.0以上 ...
- iOS之用xib给控件设置圆角、边框效果
xib中为各种控件设置圆角 通过代码的方式设置 @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *my ...
- 完美解决C#Webbrowser控件设置Cookie问题
完美解决C#Webbrowser控件设置Cookie问题由于个人项目需求,需要把从抓包里面的Cookie数据写入到webbrowser空控件里,经过百度白百般折腾,结果还是失败,搜索到的答案基本上都是 ...
- winform中的dateTimePicker控件设置默认值为空
winform中的dateTimePicker控件设置默认值为空 第一步:设置Format的属性值为“Custom” 第二步:设置CustomFormat的属性值为空,需要按一个空格键
随机推荐
- 开源数字基础设施 项目 -- Speckle
[Speckle](https://speckle.systems/)是用于 3D 设计的任何东西的开源数字基础设施.处理软件孤岛.实时协作.数据管理.版本控制和自动化之间的互操作性.致力于构建一个开 ...
- JDBC数据库编程(java实训报告)
文章目录 一.实验要求: 二.实验环境: 三.实验内容: 1.建立数据库连接 2.查询数据 2.1 测试结果 3.添加数据 3.1.测试结果 4.删除数据 4.1.测试结果 5.修改数据 5.1 测试 ...
- Three.js中加载外部fbx格式的模型素材
index.html部分: index.js部分: Scene.js部分:
- 获取不同机型微信小程序状态栏+导航栏高度
获取不同机型微信小程序状态栏+导航栏高度 一. 前言 很多时候我们开发微信小程序,都需要先知道状态栏和导航栏的高度,才能去做其他功能 二. 获取微信小程序状态栏高度 用wx.getSystemInfo ...
- Ubuntu编译安装php7.4
Ubuntu编译安装php7.4 [root@ubuntu2004 php-7.4.30]#apt install gcc libssl-dev libxml2-dev libsqlite3-dev ...
- 第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍
目录 1 背景 1.1 为什么需要分布式文件服务 1.1.1 单机时代 1.1.2 独立文件服务器 1.1.3 分布式文件系统 1.2 什么是FastDFS 2 系统架构 2.1 Tracker集群 ...
- JIRA操作之JQL
搜索功能 Jira的搜索功能非常强大,有专用的搜索语言JQL(Jira Query Language).Jira的Python库是基于JQL语法搜索的,返回的是搜索到的问题列表. jira.searc ...
- Encodings: URL
原题链接:http://www.wechall.net/challenge/training/encodings/url/index.php 题目信息:你的任务就是解码下面的东西.... 这个完全没难 ...
- 【element】中el-row如何使内容垂直居中
查阅官方文档,只需要在el-row中设置属性align为middle即可
- 协程Part1-boost.Coroutine.md
首先,在计算机科学中 routine 被定义为一系列的操作,多个 routine 的执行形成一个父子关系,并且子 routine 一定会在父 routine 结束前结束,也就是一个个的函数执行和嵌套执 ...