JavaFX:Webkit追加文件路径而不是解释它们。
我正在做一个JavaFX项目,在这个项目中我加载一个html页面,它调用CSS文件并加载一些东西。所有JavaFX:Webkit追加文件路径而不是解释它们。,java,css,javafx,path,Java,Css,Javafx,Path,我正在做一个JavaFX项目,在这个项目中我加载一个html页面,它调用CSS文件并加载一些东西。所有html,图像,css文件都位于名为resources的单独目录中,该目录位于src-->resources中。Java文件位于src-->应用程序-->Java文件中 当我直接运行应用程序时,我可以看到从CSS加载的图像,但是当我尝试从JAR文件或EXE文件加载图像时,路径会以一种奇怪的方式追加 什么奇怪的方式 因此,在Html中,我通过css/football.css调用加载css。然后加载
html
,图像
,css
文件都位于名为resources的单独目录中,该目录位于src-->resources
中。Java文件位于src-->应用程序-->Java文件中
当我直接运行应用程序时,我可以看到从CSS加载的图像,但是当我尝试从JAR文件或EXE文件加载图像时,路径会以一种奇怪的方式追加
什么奇怪的方式
因此,在Html中,我通过css/football.css
调用加载css。然后加载css。现在我给出的图像路径是。/img/image/ball.png
。当我直接运行应用程序时,它工作了,我可以看到图像。但一旦我创建了一个JAr或EXE,图像的路径就会变成/location\u of_JAr/resources/css../img/image/ball.png
。在这种情况下,webkit浏览器应该向上移动一个目录,但它只是附加路径。为什么呢?我怎样才能解决这个问题
代码:
Football.html:
<link rel="stylesheet" type="text/css" href="css/football.css"/>
正在加载index.html:
final String hellohtml = "/resources/index.html";
public MyBrowser() {
webEngine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == Worker.State.SUCCEEDED) {
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("app", this);
//webView.setEventDispatcher(webEventDispatcher);
}
});
URL urlHello = getClass().getResource(hellohtml);
webEngine.load(urlHello.toExternalForm());
webView.setPrefSize(800, 600);
webView.setContextMenuEnabled(false);
webView.getChildrenUnmodifiable().addListener((ListChangeListener<Node>) change -> {
Set<Node> deadSeaScrolls = webView.lookupAll(".scroll-bar"); for
(Node scroll : deadSeaScrolls) { scroll.setVisible(true); } });
getChildren().add(webView);
}
最后一个字符串hellohtml=“/resources/index.html”;
公共MyBrowser(){
webEngine.getLoadWorker().stateProperty().addListener((可观察、旧值、新值)->{
if(newValue==Worker.State.successed){
JSObject window=(JSObject)webEngine.executeScript(“window”);
window.setMember(“app”,this);
//setEventDispatcher(webEventDispatcher);
}
});
URL urlHello=getClass().getResource(hellohtml);
load(urlHello.toExternalForm());
webView.setPrefSize(800600);
webView.setContextMenuEnabled(false);
webView.getChildrenUnmodifiable().addListener((ListChangeListener)更改->{
将deadseacrolls=webView.lookupAll(“.scroll bar”);设置为
(节点滚动:deadSeaScrolls){scroll.setVisible(true);}});
getChildren().add(webView);
}
那么,我能做些什么来解决这个问题呢?任何想法。多谢各位
final String hellohtml = "/resources/index.html";
public MyBrowser() {
webEngine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == Worker.State.SUCCEEDED) {
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("app", this);
//webView.setEventDispatcher(webEventDispatcher);
}
});
URL urlHello = getClass().getResource(hellohtml);
webEngine.load(urlHello.toExternalForm());
webView.setPrefSize(800, 600);
webView.setContextMenuEnabled(false);
webView.getChildrenUnmodifiable().addListener((ListChangeListener<Node>) change -> {
Set<Node> deadSeaScrolls = webView.lookupAll(".scroll-bar"); for
(Node scroll : deadSeaScrolls) { scroll.setVisible(true); } });
getChildren().add(webView);
}