JavaFX知识合集(2023/04/09)
1.为啥你打的Jar包无法双击运行?
HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command
"D:\Program Files\Java\jdk1.8.0_171\bin\javaw.exe" -jar "%1"
这个是终极解法,如果再不行有很大可能是jar包结构问题。
2.如何让你的Jar程序能够开机启动?
最简单的办法是创建一个start.bat文件并放到系统启动文件夹下(一般在用户目录\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\)。
3.如何给JavaFX程序绑定全局快捷键?
我想做一个全局快捷键Alt+X控制软件界面显示隐藏。用JavaFX自带快捷键无法实现隐藏时快捷键的监听。
借助 Java 领域的 GUI 技术(如 Java Swing、JavaFX 等)就可以实现快捷键的功能。但是,使用这种方法实现的快捷键有一个致命的缺陷,那就是如果光标焦点离开此 UI 界面,则所有的快捷键都将失效。另外,这些快捷键是依附于一种 UI 界面来运行的,因此将占用额外的资源。(来源:https://blog.csdn.net/wangpaiblog/article/details/125578194)
JIntellitype
的三方库就可以轻松实现上述功能。
<dependency> <groupId>com.melloware</groupId> <artifactId>jintellitype</artifactId> <version>1.3.9</version> </dependency>
4.如何给JavaFX8写的桌面程序集成护眼模式?
方案1:JMetro
<dependency>
<groupId>org.jfxtras</groupId>
<artifactId>jmetro</artifactId>
<version>8.5.7</version>
</dependency>
// LIGHT样式
JMetro jMetro = new JMetro();
jMetro.setStyle(Style.LIGHT);
jMetro.setScene(scene);
// Dark样式
JMetro jMetro = new JMetro();
jMetro.setStyle(Style.Dark);
jMetro.setScene(scene);
经检测发现会报错
java.lang.ClassCastException: com.sun.javafx.scene.control.skin.ButtonSkin cannot be cast to impl.jfxtras.styles.jmetro8.FluentButtonSkin
没解决方法,放弃此方案。
方案2:
每个组件根据用户点击按钮,重置所有组件的背景。方法比较笨,但是有效果。