私はクラスFontInfoを持っています。私はそのボタンをクリックすると表示されるステージの新しいコントローラにオブジェクトmyFontを送信しようとします。ここに私のメインのコントローラクラスは次のとおりです。クラスオブジェクトをステージコントローラに送る - javafx
public class MainController {
//create instance of font
private FontInfo myFont;
@FXML
private Button btnChooseFont;
public void initialize()
{
//create new myFont
myFont = new FontInfo();
}
@FXML
void actionBtnChooseFont(ActionEvent event) {
try
{
//resource to new parent root
Parent root = FXMLLoader.load(getClass().getResource("../fxml/ChooseFont.fxml"));
Stage stage = new Stage();
stage.setTitle("Choose font");
stage.setScene(new Scene(root, 300, 290));
stage.show();
FXMLLoader loader = new FXMLLoader(this.getClass().getResource("../fxml/ChooseFont.fxml"));
ChooseFontController chooseFontController = loader.getController();
chooseFontController.setMyFont(myFont);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
私はChooseFontControllerクラスにMainConrollerで作成myFontオブジェクトを使用する必要があります。
public class ChooseFontController {
//myFont object
private FontInfo myFont;
//setter myFont
public void setMyFont(FontInfo myFont) {
this.myFont = myFont;
}
をしかし、私は、nullポインタ例外エラーが出ます:
Caused by: java.lang.NullPointerException
at controllers.MainController.actionBtnChooseFont(MainController.java:48)
:chooseFontController.setMyFont(myFont);
誰でもこの問題を解決できますか?
それはFXMLLoaderがコントローラを見つけることができなかったように思えるので、 'loader.getController(からnullを返します) '。たぶん 'loader.load() 'を呼び出すことでそれを見つけるのに役立つでしょう;)。 (Ps。Debuggingは、これらのケースでは正確な問題を見つけるのに大いに役立ちます) – n247s