我是Java和JavaFX的新手,在这里遇到问题 . 我试图将一个css文件添加到javafx应用程序,但我只是得到错误“未找到Resource Style.css” . 大部分代码都基于我在YouTube上发现的教程 . css文件与Main.java文件位于同一目录中 . 我不确定这是否是将样式表添加到javafx的正确方法,但这适用于教程 .
package sample;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class Main extends Application {
Stage window;
public static void main(String[] args){
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setTitle("Title");
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(8);
grid.setHgap(10);
//Name label
Label nameLabel = new Label("Username:");
GridPane.setConstraints(nameLabel, 0 ,0);
//Name input
TextField nameInput = new TextField("Emil");
GridPane.setConstraints(nameInput, 1, 0);
//Password label
Label passLabel = new Label("Password:");
GridPane.setConstraints(passLabel, 0, 1);
//Password input
TextField passInput = new TextField();
passInput.setPromptText("password");
GridPane.setConstraints(passInput, 1, 1);
//Login button
Button loginButton = new Button("Log In");
GridPane.setConstraints(loginButton, 1, 2);
grid.getChildren().addAll(nameLabel, nameInput, passLabel, passInput, loginButton);
Scene scene = new Scene(grid, 600, 350);
scene.getStylesheets().add("Style.css");
window.setScene(scene);
window.show();
}
}
2 回答
假设您的css文件与Main.java位于同一目录中,请尝试添加您的css,如下所示:
编辑:因为你的css文件在同一个目录中,它应该像这样工作 . 抱歉,在你的问题中覆盖了这句话 .
通常你的类文件被编译成一个bin目录(如果你使用eclipse),但是你没有你的css ressource,这就是为什么它找不到
在Windows上,我发现
parent.setStyle(stylesheet)
不起作用,但parent.getStylesheets().add(css)
确实有效 provided ,css只包含正斜杠,而不是反斜杠 . 例如,parent.getStylesheets().add("file:\\c:\\workspace\\Insights\\stylesheet1.css");
不起作用,但parent.getStylesheets().add("file:/c:/workspace/Insights/stylesheet1.css")
确实有效 .