ボタンがonMouseClicked属性のFXMLファイルがあります。私はコンストラクタにコントローラに提供したいデータを注入しているので、FXMLにコントローラを設定しません。コントローラをプログラマチックに設定しているときに「トップレベル要素にコントローラが指定されていません」
<Button mnemonicParsing="false" onMouseClicked="#newWidgetRequestButtonClicked" text="New Widget..." />
私はコントローラをプログラマチックに設定しており、コントローラにはFXMLで指定されたメソッドが含まれています。コントローラの機能が実行され、すべて正常に動作します。
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainView.fxml"));
MyController controller = new MyController(...);
loader.setController(controller);
私の問題は、IntelliJの.fxmlファイルの検査にあります。関数参照が出現するたびに、「Error:(45、54)最上位エレメントにコントローラーが指定されていません」と報告されます。私はIntelliJの検査ルールを見ていて、このルールはJavaFXセクションには表示されません。ここでも、プログラムはうまく構築され実行されるため、実際のコンパイルエラーではありません。このエラー通知を無効にします。
このエラーを回避するにはどうすればよいですか?
コントローラーを指定すると、コントローラークラスのテキストフィールド、ボタンにアクセスしようとするとnullpointer例外が発生します。 –