JavaFXのためにFXML内のJavaScript内からJavaメソッドを呼び出す方法

フィボナッチ:

私は、ボタンまたはアクティブにするために行う必要があります何かを使用せずにsceneController外とFXML内側からsceneControllerでメソッドを呼び出す方法を見つけようとしています。私は毎回、アプリケーションが起動したら、それは実行したいです。だから、現在、プログラムが起動するたびにそれが画面全体をカバーイメージ図を作成します。しかし、誰もがこのプログラムは、私はフォルダからランダムに画像を表示したい開きます。今ImageViewのは、FXを持っている:私は、画像を設定するシーンコントローラ内部の方法での使用のidという。シーンコントローラ内部の方法は完璧に動作します。しかし、問題は、私は、画像がランダムにプログラムで生成されるようにしたいということであるあなたがボタンを押したときに(現在は何が起こるか)起動していません。ImageViewのを制御するための方法は、シーンコントローラ内部でなければならず、それはコンストラクタを持たないように、シーンコントローラ外部から呼び出すことができない(を作成しようとし、それが問題を引き起こしました)。私はあなたがそのようにそれを行うことができますようにそれはそうとJavaScriptを使用してFXMLファイルの中から画像を設定するメソッドを呼び出すためにしようとしています(どのボタンと何ではない)FXML内からメソッドを呼び出すことができますBecauase。誰もがこの問題へのよりよい解決策を知っていれば私は思っていました。いっそFXMLファイル内のJavaScript内からJavaメソッドを呼び出す方法を知っています。私はあなたがそのようにそれを行うことができますようにそれはそうとJavaScriptを使用してFXMLファイルの中から画像を設定するメソッドを呼び出すためにしようとしています(どのボタンと何ではない)FXML内からメソッドを呼び出すことができますBecauase。誰もがこの問題へのよりよい解決策を知っていれば私は思っていました。いっそFXMLファイル内のJavaScript内からJavaメソッドを呼び出す方法を知っています。私はあなたがそのようにそれを行うことができますようにそれはそうとJavaScriptを使用してFXMLファイルの中から画像を設定するメソッドを呼び出すためにしようとしています(どのボタンと何ではない)FXML内からメソッドを呼び出すことができますBecauase。誰もがこの問題へのよりよい解決策を知っていれば私は思っていました。いっそFXMLファイル内のJavaScript内からJavaメソッドを呼び出す方法を知っています。

私が構築しようとちょっとのnoob午前午前のプログラムのためのGUIを構築するためのJavaFXを使用しています私はそう。今、私はプログラムの事業終了を建物の中に私のダイビングの前に見栄えの良いと作業GUIを取得しようとしています。私は日食4.6とJava 8を使用しています。

<VBox xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.initSceneController" >

        <fx:script>
            var executeOnce = false;

            if(executeOnce === false) {
                #setBackground;
                executeOnce = true;
            }

            else {
            }


        </fx:script>

だから私はFXMLファイルにこのコードを期待していたことは、実際にsceneHandeler内部メソッドを呼び出しますsetBackgroundと呼ばれるが、そのちょうど私にエラーを与えて:

<eval>:5:5 Expected an operand but found error
                #setBackground;
                ^ in <eval> at line number 5 at column number 5
Archangel1C:

それはあなたが求めてまさにではありませんが、おそらくあなたは、宣言する必要がありinitialize()、あなたのコントローラのメソッドを。このような方法が存在する場合、FXMLLoaderは、コントローラの初期化時にそれを実行します。このように、あなたは、任意のJavaScriptを必要としません。

public void initialize() {
    // choose your random image here
    // imageView.setImage(...);
}

あなたがプライベート/保護された方法を維持したい場合は、@FXMLでそれに注釈を付ける必要があります。

参照してくださいコントローラ内のセクションFXMLの入門ガイド。

注:問題のコンストラクタを使用しての代わりに、initialize()建設時には、フィールド(FIあなたImageViewのは)まだ(彼らは意味を注入/初期化されていないこと、であるおそらくnullので、あなたは彼らと働くことができません、)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=231044&siteId=1