自从我发布有关JavaFX的主题以来已经有很长时间了。 因此,如果您仍在追随,那就太棒了!
介绍
在这篇博客文章中,我想写一篇关于从JavaFX 8 update 20开始的非常酷的功能的博客,该功能使您的应用程序始终位于其他应用程序之上。 这意味着在您的桌面上,基于JavaFX的应用程序可以是一个浮动小部件,将保留在所有其他应用程序上方(z顺序)。 例如,右上角的天气小部件将不会被其他应用程序所遮盖。 因此,我很高兴与您分享这个惊人的功能“ Always On Top”。
历史
过去,Java Swing开发人员将依赖于Window.setAlwaysOnTop(boolean)方法。 这项功能使Swing开发人员可以构建具有本机外观和本机性能的桌面应用程序。 从JavaFX 1.x开始,就一直强烈要求此功能(最初由Stephen Chin @steveonjava要求WidgetFX框架)。 此功能请求是JIRA票证RT-153 。 图1是功能请求,状态为“已解决”。
尽管JavaFX 1.x,2.x和Java 8u20之前的版本没有使用此功能,但现在终于可以使用了。 对于那些不知道如何报告错误或提出新功能的人,我建议您转到JavaFX JIRA系统。
示例:天气小部件
假设您了解自2.0版以来的JavaFX基础知识,那么典型的应用程序将包括从javafx.application.Application类扩展。 开发JavaFX桌面应用程序时,平台API将为您提供一个(javafx.stage.Stage)窗口。 Stage对象将具有以下方法来访问Always on top属性。
- alwaysOnTopProperty()
- setAlwaysOnTop(boolean)
- isAlwaysOnTop()
以下代码段使用setAlwaysOnTop(boolean)方法将舞台设置为始终位于最上面。
public class KeyholeDemo extends Application {@Override public void start(Stage primaryStage) {primaryStage.initStyle(StageStyle.TRANSPARENT);primaryStage.setAlwaysOnTop(true);// code omitted...}public static void main(String[] args) {launch(args);}
}
怎么运行的
如清单上方所示, start()方法将舞台设置为透明,成为没有标题栏的JavaFX窗口。 这允许应用程序在桌面上具有不规则形状的窗口。 如果网络人员再次向您兜售JavaFX,请向他们询问以下问题:“ HTML5可以在桌面上创建不规则形状的窗口吗? (总在最前面)”。 接下来,通过setAlwaysOnTop()方法将舞台设置为始终位于最上面。
演示版
意识到这个功能非常抢手后,我基本上在Github上更新了旧的“ KeyholeWidget ”项目,并创建了一个视频,在桌面上演示了该小部件。 这是视频:
要查看完整的代码清单,请访问Github项目“ KeyholeWidget ”。
希望您喜欢这个很棒的功能(我知道我喜欢)。 和往常一样,请在下面留下评论。
编码愉快!
翻译自: https://www.javacodegeeks.com/2014/05/javafx-8u20-days-of-future-past-always-on-top.html