我已经在谷歌和这里搜索了几个小时,但没有找到任何解决此问题的答案。我想创建一个只包含图标的应用程序。它没有任何目的。这只是为了练习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