Java FX无法加载字体图标
我是JavaFX新手。我正在使用下面的代码来加载我的本地HTML页面,该页面使用引导程序、Angular等Java FX无法加载字体图标,java,maven,javafx,javafx-8,font-awesome,Java,Maven,Javafx,Javafx 8,Font Awesome,我是JavaFX新手。我正在使用下面的代码来加载我的本地HTML页面,该页面使用引导程序、Angular等 public class AppLauncher extends Application { public static void main(String[] args) { System.setProperty("sun.net.http.allowRestrictedHeaders", "true"); launch(args); }
public class AppLauncher extends Application {
public static void main(String[] args) {
System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
launch(args);
}
@Override
public void start(Stage stage) {
WebView webview = new WebView();
webview.getEngine().load(AppLauncher.class.getResource("/dashboard.html").toExternalForm());
stage.setScene(new Scene(webview));
stage.show();
}
}
由于我的Java脚本具有来自不同域的XHR,所以我将其配置为允许跨域请求。
当我从Eclipse运行它时,一切都正常。
我需要一个可执行文件,所以我使用了maven shade plugin
以及launch4jmaven plugin
。
可执行文件创建得非常完美,可以打开我的HTML页面。
但问题是UI没有呈现HTML页面中的font-awesome
图标(也不是来自创建的jar)。
我有fa角度向下
,fa-bell-o
,fa搜索
。没有一个被展示出来。
请看图片和图片
是什么原因导致它在转换为可执行jar或exe时不呈现fa图标?我有一个非常类似的问题,是的,正如上面的Master Po详细信息所述,我认为这是由于CSS引用字体位置,编译时无法到达。 我通过在我的webview中添加额外的CSS解决了这个问题:
yourWebviewObject.getEngine().setUserStyleSheetLocation("data:,@font-face{font-family:'FontAwesome';src:url('"+getClass().getResource("path/to/fontawesome-webfont.eot").toExternalForm()+"');src:url('"+getClass().getResource("path/to/fontawesome-webfont.eot").toExternalForm()+"') format('embedded-opentype'),url('"+getClass().getResource("path/to/fontawesome-webfont.woff2").toExternalForm()+"') format('woff2'),url('"+getClass().getResource("path/to/fontawesome-webfont.woff").toExternalForm()+"') format('woff'),url('"+getClass().getResource("path/to/fontawesome-webfont.ttf").toExternalForm()+"') format('truetype'),url('"+getClass().getResource("path/to/fontawesome-webfont.svg").toExternalForm()+"?v=4.7.0#fontawesomeregular') format('svg');}");
我花了一段时间才弄明白上面的问题(特别是setUserStyleSheetLocation()
可以将数据放在自己的字符串中,而不需要实际的CSS文件),因此我希望它能帮助其他人
作为背景,我正在使用hugo创建一个静态网站,用于在JavaFX应用程序中提供帮助/文档
这种方法的想法来自:我认为问题在于font-awome.css中的相对字体路径
@font-face{src:url('../fonts/fontawesome webfont.eot?v=4.7.0');src:url('../fonts/fontawesome webfont.eot?#iefix&v=4.7.0')格式('embedded-opentype')、url('../fontawesome webfont.woff2?v=4.7.0')格式('woff2'),}
似乎Java Fx WebView转换为可执行文件(jar/exe)时无法访问这些文件。如果我使用CDN中的font awesome,没有问题。当它转换成可执行的jar时,仍然可以得到发生的事情:(也许可以帮助?