0

したがって、これはアプリケーションを実行するコードです。

public class TestJavaFX extends Application {
private Scene scene;

@Override
public void start(Stage stage) throws UnsupportedEncodingException, IOException {
    // create the scene
    stage.setMinWidth(550);
    stage.setMinHeight(400);
    stage.setTitle("Dashboard Loading...");
    WebView browser = new WebView();
    // sets temp title of scene & creates WebView, a JavaFX panel
    // Programmatic capabilities (aka DOM/loading pages) are accessed
    // through the WebEngine (browser.getEngine())

    browser.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
        public void changed(ObservableValue ov, State oldState, State newState) {
            if (newState == State.SUCCEEDED) {
                JSObject win = (JSObject) browser.getEngine().executeScript("window");
                win.setMember("app", new JavaApp());
                HTMLDocument doc = (HTMLDocument) browser.getEngine().getDocument();
                stage.setTitle(doc.getTitle());
            }
        }
    });
    // adds listener to add app object (from java) to the javascript
    // allowing javascript access to java functions
    // and also changes the window title to the HTML title

    browser.getEngine().load(getClass().getResource("html/index.htm").toString());
    // loads the page, resource is configured to run in a jar setting as
    // well as in the IDE

    StackPane layout = new StackPane();
    layout.getChildren().add(browser);
    // creates a layout for the scene and adds the webview

    scene = new Scene(layout, 900, 650);
    new JavaApp().runBatch(5050505);
    // initiates the scene (AKA the inner part of the window) and adds a
    // layout
    // numbers can be changed; they are the size of the window (W,H)

    stage.setScene(scene);
    stage.show();
    // adds scene to stage (window part of window)
    // packs stage and makes stage visible

}

public static void main(String[] args) {
    launch(args);

}

JavaApp クラスのコードは次のとおりです。

    public class JavaApp{

    public void runBatch(int num) /*throws IOException*/ {
        System.out.println(num);
       }
    }

HTML ファイルは、onclick 属性 ="app.runBatch(number)" を持つボタンによって runBatch を呼び出します。number は 0、1、2 などです。

問題は次のとおりです。理由はわかりませんが、runBatch の定義に引数 (int num など) がある場合は常に、関数が Web ページに存在しないかのように見え、HTML ボタンをクリックしても実行されません。 . 引数を削除するとすぐに、正常に実行されます。これはバグですか、それとも私が修正できるものですか?

4

0 に答える 0