【问题标题】:Load JavaFX CSS with whitespaces within path在路径中加载带有空格的 JavaFX CSS
【发布时间】:2015-09-24 08:47:14
【问题描述】:

在加载外部 CSS 文件时遇到问题,该文件的路径包含一个或多个空格。

控制台上显示以下警告:

2015 年 9 月 24 日上午 10:27:25 com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged 警告:找不到资源文件:////home/user1/css/styles one/theme.css"。

getScene().getStylesheets().add("file:////home/user1/css/styles one/theme.css");

这是 JavaFX 中的已知错误还是我的代码有问题?

【问题讨论】:

  • 如果你不赞成我的问题。然后至少说出你为什么这样做!我已经搜索过......但找不到任何解决方案。
  • 你试过styles%20one吗?
  • @ItachiUchiha :我只是想写下我找到了解决方案 :D 和你提到的完全一样。需要编码为 URL 的路径。谢谢。写一个答案,这样我就可以接受你的:)

标签: css javafx path


【解决方案1】:

您应该在此处使用编码 URL,即所有空白字符都应替换为 %20

您需要将style one 替换为styles%20one

代码:

getScene().getStylesheets().add("file:////home/user1/css/styles%20one/theme.css");

您可能不想手动对其进行编码,因此您可以使用:

try {
    URL url = new File(fileName).toURI().toURL();
    String encodedFileName = url.toString();
} catch (MalformedURLException e) {
    e.printStackTrace();
}

【讨论】:

  • 我认为更好的解决方案,而不是手动编码路径是这样的:try { URL url = new File(fileName).toURI().toURL(); String fileNameEnc = url.toString(); } catch (MalformedURLException e) { e.printStackTrace(); }
  • 正确的方法是使用 url.toExternalForm() 但这并没有什么不同,因为 toString() 是通过调用 toExternalForm() 来实现的。
猜你喜欢
  • 1970-01-01
  • 2013-03-06
  • 2012-10-29
  • 1970-01-01
  • 2012-08-30
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
相关资源
最近更新 更多