java - 有没有办法在不使用 Swing 的情况下隐藏 JavaFX 应用程序而不显示在系统托盘中?
问题描述
假设我有一个扩展类的Application
类,就像这样。(这是我从另一篇文章中找到的 Web 浏览器实现示例)
public class WebViewBrowser extends Application {
@Override
public void start(Stage stage) throws Exception {
stage.setScene(new Scene(new WebViewPane("http://google.com")));
stage.setFullScreen(true);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
class WebViewPane extends Pane {
final WebView view = new WebView();
final Button goButton = createGoButton(view.getEngine());
public WebViewPane(String initURL) {
view.getEngine().load(initURL);
getChildren().addAll(view, goButton);
initLayout();
}
private Button createGoButton(final WebEngine eng) {
Button go = new Button("Refresh");
go.setDefaultButton(true);
go.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
eng.reload();
}
});
return go;
}
private void initLayout() {
setMinSize(500, 400);
setPrefSize(1024, 768);
view.prefWidthProperty().bind(widthProperty());
view.prefHeightProperty().bind(heightProperty());
goButton.setLayoutX(10);
goButton.layoutYProperty().bind(heightProperty().subtract(20).subtract(goButton.heightProperty()));
}
}
我要解决的问题是 JavaFX 应用程序在运行时有一个图标显示在系统托盘中。我将使用此应用程序覆盖在另一个正在运行的程序之上。因此,如果系统托盘中的图标显示出来,就会显得不专业。我在这里看到了这个 Stack Overflow 帖子,但我通常希望避免将 Swing 添加到我的程序中,因为试图让这两个 GUI API 相互匹配会很麻烦。我从帖子中的回答中得知,在 JavaFX 8 及更高版本中是可能的。有谁知道一种方法来隐藏这个 JavaFX 应用程序,使其仅使用 JavaFX 而不使用 Swing 在系统托盘中显示?谢谢。
解决方案
推荐阅读
- apache-spark - Spark - 宽/稀疏数据帧持久性
- flutter - Flutter Live Camera Overlay 与其他图像
- sql - 根据类型创建表
- python - Windows10 上的 Anaconda:如何从 python 调用 C/C++?
- android - 使用 Compose 在导航中的可组合项之间制作动画
- python - Python 的问题 - KeyError
- laravel - Laravel 8 工厂迁移在 n + 1 次迭代时失败
- flutter - 如何在页面初始化时为容器设置动画;
- node.js - 如何在nodejs中一周后发送电子邮件
- c# - 如何将锚标记链接到 c# 函数?