7

ファイルシステムのどこかにある CSS ファイルを追加したいと思います。目的は、ユーザーが (誰でも作成し、どこにでもある) JavaFX CSS ファイルを動的に追加できるアプリケーションを作成することです。
動的に追加されたCSSファイルが機能するかどうかを確認するために、テストのためだけに、そのようなことを試しました:

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Label label = new Label("Hello");
        Scene scene = new Scene(label);

        //file would be set by an file chosser
        File file = new File("C:/test.css");
        scene.getStylesheets().add(file.getAbsolutePath());

        primaryStage.setTitle("Title");
        primaryStage.setScene(scene);
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

しかし、私は常に同じエラーが発生します:

WARNING: com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged Resource "C:\test.css" not found. 

どうすれば修正できますか?

4

5 に答える 5

14

同じパッケージのcssが単に使用する場合

scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
于 2014-11-14T07:39:18.470 に答える
4

からURLを取得できますjava.io.File

File file = new File("style.css");
URL url = file.toURI().toURL();
scene.getStylesheets().add(url.toExternalForm());

または短い形式で

scene.getStylesheets().add((new File("style.css")).toURI().toURL().toExternalForm());
于 2015-07-27T14:59:34.493 に答える
1

"C:/test.css"文字列が URI リソースではないため、例外がスローされます。したがって、文字列を URI リソースに変換する必要があります。

Java 7以降、次のことができます:

String uri = Paths.get("C:/test.css").toUri().toString();
scene.getStylesheets().add(uri);
于 2016-11-02T12:34:51.830 に答える
0
scene.setUserAgentStylesheet("Assets/StyleSheets/Styless.css");
于 2016-02-22T18:32:21.477 に答える