如何从任务栏中删除我的 javafx 程序

Posted

技术标签:

【中文标题】如何从任务栏中删除我的 javafx 程序【英文标题】:How can I remove my javafx program from the taskbar 【发布时间】:2018-03-24 13:11:42 【问题描述】:

我需要从任务栏中删除我的 javafx 应用程序。我试过StageStyle.UTILITY。这是可行的,但我需要 UNDECORATED 和 UTILITY 舞台风格或其他解决方案。 感谢您的回复。

【问题讨论】:

这似乎有点类似于Is it possible to have a transparent utility stage in javafx?,尽管这些问题的答案似乎都没有满足这个问题的要求(至少在 OS X 中,JavaFX 图标总是显示在操作系统中X 为我停靠,我不知道如何阻止这种情况发生)。 【参考方案1】:

对不起,您已经等待了这么久的某种答案,以下主要是为将来希望找到实现此目标的方法的人们提供的。

首先让我说我不会考虑以下解决方案,而是更多的解决方法。 将多个initStyle 分配给一个阶段是不可能的,但是从任务栏中隐藏应用程序并将initStyle 分配给显示的阶段以外的实用程序。

要实现这一点,必须创建两个阶段,一个是他们希望用户看到的阶段,另一个阶段将被视为主阶段的父级,并且将是 initStyle.UTILITY 这将阻止图标显示任务栏。

您可以在下面看到修改后的 oracles 文档中的 hello world 示例,以允许没有图标的未装饰窗口(请注意,如果想要实现透明/装饰窗口,他们可以通过更改 mainStage 的样式来实现)。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;


public class MultipleStageStyles extends Application 

    public static void main(String[] args) 
        launch(args);
    

    @Override
    public void start(Stage primaryStage) 
        primaryStage.initStyle(StageStyle.UTILITY);
        primaryStage.setOpacity(0);
        primaryStage.setHeight(0);
        primaryStage.setWidth(0);
        primaryStage.show();
        Stage mainStage = new Stage();
        mainStage.initOwner(primaryStage);
        mainStage.initStyle(StageStyle.UNDECORATED);
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() 
            @Override
            public void handle(ActionEvent event) 
                System.out.println("Hello World!");
            
        );
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        mainStage.setScene(new Scene(root, 300, 250));
        mainStage.show();
    

【讨论】:

以上是关于如何从任务栏中删除我的 javafx 程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 从 Windows 任务栏中删除新闻和兴趣? [关闭]

JavaFX。为标题栏和操作系统任务栏设置不同的图标

使 Tkinter 窗口显示在任务栏中

从 Windows 10 的任务栏中删除窗口

PyQt 从任务栏中删除窗口

Tkinter,Windows:如何在没有标题栏的 Windows 任务栏中查看窗口?