我已經在谷歌和這裏搜索了幾個小時,但沒有找到任何解決此問題的答案。我想創建一個只包含圖標的應用程序。它沒有任何目的。這只是爲了練習JavaFX。但我不明白爲什麼有一個可見的窗口,即使我將其設置爲透明。有沒有辦法阻止透明Stage + Scene顯示前幾毫秒?
正如你所見,here,這就是我想要做的。這是,它應該看起來像我啓動應用程序一樣(正如我所說,這只是一個隨意的圖標,沒有任何目的......仍在學習,這是我的實踐項目)。但由於某種原因,它會加載舞臺/場景幾毫秒,這將產生「一次閃爍」的效果。 This是窗戶的樣子。這只是舞臺/場景,我是如何設置它的(這是很大的看到它更清晰,它是一半tranparent,因爲它太快,我不能創建一個更好的屏幕截圖:(),但沒有透明設置。我有:
public class MainNotification extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage = new Stage(StageStyle.TRANSPARENT);
GridPane pane = new GridPane();
Scene scene = new Scene(pane);
scene.setFill(Color.TRANSPARENT);
primaryStage.setScene(scene);
TestPloppingWindow.build(primaryStage);
primaryStage.show();
}
}
和:
public class TestPloppingWindow {
private static boolean isBuild;
private static double posX = 100;
private static double posY = 100;
public static Stage build(Stage stage) {
if (!isBuild()) {
GridPane pane = (GridPane) stage.getScene().getRoot();
ImageView image = new ImageView(
new Image(MainNotification.class.getResourceAsStream("/Ressource/icon.png"), 100, 100,
true, true));
image.setOnMouseClicked(e -> {
biggerIcons();
});
pane.getChildren().add(image);
pane.setAlignment(Pos.CENTER);
stage.setScene(stage.getScene());
pane.setPrefSize(500, 250);
setBuild(true);
}
return stage;
}
public static void biggerIcons() {
Stage stage = new Stage(StageStyle.TRANSPARENT);
stage.setX(posX = posX + 100);
stage.setY(posY = posY + 100);
GridPane pane = new GridPane();
Scene scene = new Scene(pane, Color.TRANSPARENT);
stage.setScene(scene);
ImageView view = new ImageView(
new Image(TestPloppingWindow.class.getResourceAsStream("/Ressource/icon.png")));
pane.getChildren().add(view);
stage.show();
}
public static boolean isBuild() {
return isBuild;
}
private static void setBuild(boolean isBuild) {
TestPloppingWindow.isBuild = isBuild;
}
}
每當我點擊小圖標,一個更大的將顯示(biggerIcons())和對,我沒有這個問題。它平穩地消失,沒有任何舞臺/場景眨眼問題。有誰知道如何解決這個問題?
我敢打賭,那是因爲你正在做的'primaryStage =新階段(...)'。你可以嘗試'primaryStage.initStyle(StageStyle.TRANSPARENT);'而不是看看會發生什麼? –
Nope :(沒有工作,不幸的是 – Ulli