JavaFX + CSS样式表背景图像无法加载(无FXML或SceneBuilder)[duplicate]

k4emjkb1  于 2022-11-19  发布在  Java
关注(0)|答案(1)|浏览(201)

此问题在此处已有答案

How do I determine the correct path for FXML files, CSS files, Images, and other resources needed by my JavaFX Application?(1个答案)
1小时前关闭。
我对JavaFX还是个新手,但我最近发现了样式表,并发现可以使用它来设置应用程序的设计。我想看看是否可以将应用程序的背景更改为图像。这是我当前的项目设置:
16copia.jpg是我想设置的背景。

这是我的style.css设置。

.root{
    -fx-font-family: 'JetBrains Mono';
    -fx-font-size: 10px;
    -fx-background-image: url("16copia.jpg");
    -fx-background-repeat: no-repeat;
    -fx-background-size: stretch;

}
.button{
    -fx-base:lightblue;
}
.label {
    -fx-text-fill: lightblue;
}

在我的主类中,我将样式表添加到了我的主场景中。还尝试使用root.setStyle,但没有效果。

public void start(Stage stage){
    stage.setTitle("Calculator App");
    genMenuBar();
    setFunctionality();

    Scene mainScene = new Scene(root, 300, 500);
    root.setBottom(calcView);
    root.setCenter(displayView);
    mainScene.getStylesheets().add("style.css");
    stage.setScene(mainScene);
    stage.show();
    //root.setStyle("-fx-background-image: url('src/main/java/calculator/app/16copia.jpg');");
}

当我运行程序时,应用了除图像之外的所有CSS样式。
这并不意味着最终的外观,主要只是对样式表进行试验:

程序运行时没有错误,但是bug仍然存在。如果可能的话,我更愿意坚持CSS样式。

pes8fvy9

pes8fvy91#

将图片移到resources文件夹中,并将路径字符串替换为文件名,似乎已经解决了这个问题。谢谢@jewelsea!
以下是修改内容,供参考。

.root{
    -fx-font-family: 'JetBrains Mono';
    -fx-font-size: 10px;
    -fx-background-image: url("16copia.jpg");
    -fx-background-size: stretch;    
}

已将16copia.jpg移至资源文件夹:

相关问题