0
我需要從任務欄中刪除我的javafx應用程序。我試過StageStyle.UTILITY
。這是行得通的,但我需要UNDECORATED和UTILITY舞臺風格或其他解決方案。 謝謝你的回覆。如何從任務欄中刪除我的javafx程序
我需要從任務欄中刪除我的javafx應用程序。我試過StageStyle.UTILITY
。這是行得通的,但我需要UNDECORATED和UTILITY舞臺風格或其他解決方案。 謝謝你的回覆。如何從任務欄中刪除我的javafx程序
對不起,您一直在等待這麼長時間的回答,以下主要針對未來希望找到實現此目標的方式的人。
讓我開始說我不會考慮以下解決方案,但更多的解決方法。 將一個以上的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的透明實用階段?(https://stackoverflow.com/questions/27759019/is-it-possible-to-have-a -transparent-utility-stage-in-javafx/27763555#27763555),儘管這些問題的答案似乎都沒有做這個問題的要求(至少在OS X中,一個JavaFX圖標總是顯示在OS X dock中對我而言,我不知道如何阻止發生)。 – jewelsea