清除当前的WebView内容并在JavaFX中重新加载不同的内容

时间:2015-06-18 16:54:12

标签: webview javafx javafx-8 fxml

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

当选择menuitem时,有两个相同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());        
    }    
}

MenuItemsFishEyeLens.java 是我根据MenuItem Click调用函数的地方。

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时,输出显示两个相同的图形,第一个显示pblnFishEyeLens值= 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

0 个答案:

没有答案