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

如何从任务栏中删除javafx程序,javafx,stage,Javafx,Stage,我需要从任务栏中删除我的javafx应用程序。我尝试了StageStyle.UTILITY。这是作品,但我需要未装饰和实用阶段的风格或其他解决方案。 感谢您的回复。很抱歉,您等待了这么长时间,等待关于这个问题的答案,以下主要是为那些未来希望找到实现这一点的方法的人准备的 让我先说,我不认为下面的解决方案,但更多的是解决办法。 不可能将多个initStyle分配给一个阶段,但是不可能从任务栏隐藏应用程序,也不可能将initStyle以外的实用程序分配给显示的阶段 要实现这一点,必须创建两个阶段,一

我需要从任务栏中删除我的javafx应用程序。我尝试了
StageStyle.UTILITY
。这是作品,但我需要未装饰和实用阶段的风格或其他解决方案。
感谢您的回复。

很抱歉,您等待了这么长时间,等待关于这个问题的答案,以下主要是为那些未来希望找到实现这一点的方法的人准备的

让我先说,我不认为下面的解决方案,但更多的是解决办法。 不可能将多个
initStyle
分配给一个阶段,但是不可能从任务栏隐藏应用程序,也不可能将
initStyle
以外的实用程序分配给显示的阶段

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

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

导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
导入javafx.stage.StageStyle;
公共类multiplestatestyles扩展了应用程序{
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
公共无效开始(阶段primaryStage){
initStyle(StageStyle.UTILITY);
初级阶段:毛不透明度(0);
初生阶段。设置高度(0);
初级阶段设置宽度(0);
primaryStage.show();
阶段主体=新阶段();
主体。初始所有者(初级阶段);
主干。初始样式(舞台样式。未装饰);
按钮btn=新按钮();
btn.setText(“说‘你好,世界’”);
btn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
System.out.println(“你好,世界!”);
}
});
StackPane root=新的StackPane();
root.getChildren().add(btn);
主干。设置场景(新场景(根,300250));
show();
}
}
这似乎有点类似,但这些问题的答案似乎都不符合这个问题的要求(至少在OS X中,我的OS X dock中总是显示一个JavaFX图标,我不知道如何阻止这种情况发生)。
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();
    }
}