清除当前WebView内容并在JavaFX中重新加载其他内容

清除当前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

我有一个WebView,它显示一个HTML页面,比如MainGraph.HTML,并以“false”作为参数执行一个javascript函数。单击其中一个菜单项,我希望调用相同的javascript函数,但现在参数为“true”

当选择菜单项时,相同javascript有两个输出,而不是最新的一个替代旧的一个

AnalysisController.java

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添加一个新的侦听器。这些侦听器永远不会被删除。有什么更好的方法可以只添加一次侦听器?