我正在开发JavaFX的Snake游戏(我是个更好的人)。 在主要方法中,我设置了scene.setFill(Color.BLACK),因此背景是完全黑色的。当我添加标签时,当我尝试实例化它时,背景消失并且该标签未显示在屏幕上。 如果我添加“矩形”或“圆形”,则不会发生这种情况,而只能添加“标签”,“按钮”等。
我该如何解决?我认为这是一个简单的问题,但我自己无法解决。
/Main.java
GamePanel g = new GamePanel();
BorderPane root = new BorderPane();
//Scene scene = new Scene(root,400,400, Color.BLACK);
Scene scene = new Scene(root,400,400);
scene.setFill(Color.BLACK);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setTitle("SnakeFX");
primaryStage.show();
root.getChildren().add(g);
g.requestFocus();
/GamePanel.java(我仅将一部分函数initialize()放在 是构造函数的第一个函数,用于初始化 游戏图片,并且必须包含我的标签)
void initialize() {
/* IF I PUT THIS LINE THE BLACK COLOR ON THE BACKGROUND DISAPPEAR
AND LABEL DOES NOT APPEAR ON THE SCREEN.
WITHOUT THIS LINE THE GAME RUNS PERFECTLY B BUT I NEED THIS LINE TO ADD
THE SCORE EHEH */
Label l = new Label("TEST"); //this is the line
for(int i=0;i<WIDTH;i=i+WIDTH/40) {
Line line = new Line();
line.setStartX((double)i);
line.setStartY(0.0);
line.setEndX((double)i);
line.setEndY((double)HEIGHT);
line.setVisible(true);
super.getChildren().add(line);
}
for(int j=0;j<HEIGHT;j=j+HEIGHT/40) {
Line line = new Line();
line.setStartY((double)j);
line.setStartX(0.0);
line.setEndY((double)j);
line.setEndX((double)WIDTH);
line.setVisible(true);
super.getChildren().add(line);
}
....
...
. ..
}
第一个图像没有标签的实例化。 第二张图片带有标签的实例化(背景颜色未显示,标签未显示)
答案 0 :(得分:0)
这是JavaFx错误(请参见this answer)。
在第二张图像中看到的是根节点的(BorderPane)背景颜色(该颜色在javafx默认主题中定义,并且不是透明的)。这是正确的状态-第一张图片显示了上面链接的答案中描述的错误。
您可以轻松解决问题:
从根节点删除背景色,因此场景的背景色变得可见:
root.setBackground(Background.EMPTY);
或将根节点的背景色设置为黑色:
root.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));