清除当前WebView内容并在JavaFX中重新加载其他内容
我有一个WebView,它显示一个HTML页面,比如MainGraph.HTML,并以“false”作为参数执行一个javascript函数。单击其中一个菜单项,我希望调用相同的javascript函数,但现在参数为“true” 当选择菜单项时,相同javascript有两个输出,而不是最新的一个替代旧的一个 AnalysisController.java清除当前WebView内容并在JavaFX中重新加载其他内容,webview,javafx,javafx-8,fxml,Webview,Javafx,Javafx 8,Fxml,我有一个WebView,它显示一个HTML页面,比如MainGraph.HTML,并以“false”作为参数执行一个javascript函数。单击其中一个菜单项,我希望调用相同的javascript函数,但现在参数为“true” 当选择菜单项时,相同javascript有两个输出,而不是最新的一个替代旧的一个 AnalysisController.java public class AnalysisController implements Initializable { public v
public class AnalysisController implements Initializable {
public void displayMainGraph(WebEngine weMainGraph, boolean pblnFishEyeLens) {
System.out.println("AnalysisController.displayMainGraph(): Called");
String strDataFile = strCurrentInputFile + ".json";
final URL urlLoadMainGraph = getClass().getResource("html/MainGraph.html");
weMainGraph.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
if (newState == State.SUCCEEDED) {
weMainGraph.executeScript(" doEverything(' "+strDataFile+" ', "+pblnFishEyeLens+") ");
}
});
weMainGraph.load(urlLoadMainGraph.toExternalForm());
}
}
而menuitemsfisheylens.java是我根据MenuItem单击调用函数的地方
public class MenuItemFishEyeLens extends WelcomeMenuBar.MenuItemGeneric implements IMenuItem{
public MenuItemFishEyeLens(String pstrMenuItemDisplay, String pstrMenuItemClass, String pstrMenuItemIconPath) {
super(pstrMenuItemDisplay, pstrMenuItemClass, pstrMenuItemIconPath);
}
@Override
public void Click(TabPane pTabPane, AnalysisController pController, boolean pblnSelected) {
String strCallingMethod = "AnalysisMenuBar.MenuItemFishEyeLens.Click(): ";
pController.displayMainGraph(pController.getCurrentWebEngine(), pblnSelected);
System.out.println(strCallingMethod+"END");
}
}
单击MenuItem时,输出将显示两个相同的图形,第一个图形的PBLNFHISHEELENS值为false,第二个图形的值为true。输出是
WelcomeMenuBar.MenuItemOpen.Click(): END
Thi is called with parameter: false
AnalysisController.displayMainGraph(): Called
displayMainGraph(): test1.meerkat FishEyeLens parameter: true
AnalysisMenuBar.MenuItemFishEyeLens.Click(): END
Thi is called with parameter: false
Thi is called with parameter: true
每次调用
displayMainGraph
,都会向web引擎的load worker添加一个新的侦听器。这些侦听器永远不会被删除。有什么更好的方法可以只添加一次侦听器?