JavaFXアプリケーションで、私はNullPointerExceptionを取得しています。私の人生を理解できません。このアプリは、このケースではさまざまなデータを持つテーブルの開発者エントリを表示するシンプルな擬似データベースであり、ユーザは入力を提供して新しいエントリを作成するためにセカンダリウィンドウを開くことができます。ユーザーが新しい開発者のためのデータ入力の二次ウィンドウのJavaFX FXML app:FXMLノードでの奇妙なNullPointer例外
public class MainWindowController {
/*
*/
@FXML
public static Text textMessageDisplay;
@FXML
private void handleCreateDeveloper() throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("CreateDeveloperWindow.fxml"));
Scene CreateDeveloperScene;
CreateDeveloperScene = new Scene(loader.load());
Stage inputStage = new Stage();
inputStage.initOwner(theStage);
inputStage.setScene(CreateDeveloperScene);
inputStage.showAndWait();
}
public void initialize() {
developerNameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
}
/*
*/
}
コード:メインウィンドウコントローラのコードこれは何
public class CreateDeveloperWindowController {
@FXML
private Button newDeveloperCreateButton;
@FXML
//TODO Check for same name
private void handleCreateDeveloperButton() {
String proposedNewDevName = newDeveloperNameTextField.getText();
String proposedNewDevPass = newDeveloperPassTextField.getText();
if (proposedNewDevName.equals("") || proposedNewDevPass.equals("")) {
MainWindowController.textMessageDisplay.setText("Name and password must not be empty!");
} else {
allDevelopers.add(new Developer(proposedNewDevName, proposedNewDevPass));
}
}
}
はラインでNullPointerExceptionがスローです
MainWindowController.textMessageDisplay.setText("Name and password must not be empty!");
入力テキストフィールドを空にして[作成]ボタンを押すとすぐに、どうして?すべて私がうまくいけば、textMessageDisplayはMainWindowControlledで宣言され、FXMLファイルから初期化されています。アプリケーションウィンドウにデフォルトのテキストが表示されます。何が起こっているのですか、私はここで何が欠けていますか?
私は既に宣言と初期化を正しく行ったと言いました。変数が実際に既存のオブジェクトを指していると思います。おそらく私のコードで何が間違っているのかを詳しく説明できますか? – Sargon1
なぜ例外が発生するのかについてはhttp://stackoverflow.com/questions/23105433/javafx-8-compatibility-issues-fxml-static-fieldsを参照してください。http://stackoverflow.com/questions/34118025/javafx-pass-あなたがやろうとしていることをするための方法については、子から親への価値観。 –