我有一个显示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