【问题标题】:JavaFX stylesheets dynamically imported in stylemanager在 stylemanager 中动态导入的 JavaFX 样式表
【发布时间】:2013-11-13 13:28:39
【问题描述】:

我正在开发一个 JavaFX 应用程序,目前正在从事资源管理工作。我实现了创建实用程序静态类,为我的应用程序提供字体、图像等。 但我卡在 CSS 加载上。

我的 Util 静态类定义:

public static ArrayList<String> getStyleSheets() {
    return listAbsoluteFileNames(cssDir);
}

public static ArrayList<String> listAbsoluteFileNames(File dir) {
    File[] listOfFiles = dir.listFiles();
    ArrayList<String> list = new ArrayList<String>();
    for(int i=0 ; i<listOfFiles.length ; i++) {
        if(listOfFiles[i].isFile())
            list.add(listOfFiles[i].getAbsolutePath());
        }
        return list;
    }

cssDir 是一个文件对象,它定义了包含我的样式表的目录“css”。我想加载这些文件,但出现了一些错误。

在我的应用程序子类中:

stage.getScene().getStylesheets().addAll(Resources.getStyleSheets());

产生的错误:

WARNING: com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged Resource "C:\Users\...\resources\css\main_menu.css" not found.
WARNING: com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged Resource "C:\Users\...\resources\css\main_menu.css" not found.

解决方案 1:我可以在窗格中读取我需要的 css 文件以使用方法“setStyle(/我的 css 文件的内容/)”设置样式,但我认为这可能是一个更好的方法。

感谢您的帮助。

【问题讨论】:

  • 我找到了解决方案,我没有在我的实现中使用 URL。 StyleManager 从指定路径加载文件,例如:file:///C:/.../file.css 我在已经讨论过的帖子中找到了解决方案:stackoverflow.com/questions/16236641/…

标签: java css resources javafx stylesheet


【解决方案1】:

我希望你现在已经知道了,但我还是会说同样的话,以帮助任何搜索 StackOverflow 的人 ;)

问题是您传递给stage.getScene().getStylesheets().addAll(...) 的字符串必须代表URL,而您传递的是绝对文件名。 所以你的日常应该是:

public static ArrayList<String> listAbsoluteFileNames(File dir) {
    File[] listOfFiles = dir.listFiles();
    ArrayList<String> list = new ArrayList<String>();
    for(int i=0 ; i<listOfFiles.length ; i++) {
        if(listOfFiles[i].isFile())
            try {
                list.add(listOfFiles[i].toURI().toURL().toExternalForm());
            } catch (MalformedURLException e) {
                // should never happen
            }
    }
    return list;
}

【讨论】:

    猜你喜欢
    • 2013-04-20
    • 2018-01-25
    • 2016-07-09
    • 1970-01-01
    • 2018-04-26
    • 2018-02-19
    • 2016-07-19
    • 2020-10-22
    • 2013-11-28
    相关资源
    最近更新 更多