2016-04-07 27 views
0

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ファイルから初期化されています。アプリケーションウィンドウにデフォルトのテキストが表示されます。何が起こっているのですか、私はここで何が欠けていますか?

+0

私は既に宣言と初期化を正しく行ったと言いました。変数が実際に既存のオブジェクトを指していると思います。おそらく私のコードで何が間違っているのかを詳しく説明できますか? – Sargon1

+0

なぜ例外が発生するのかについてはhttp://stackoverflow.com/questions/23105433/javafx-8-compatibility-issues-fxml-static-fieldsを参照してください。http://stackoverflow.com/questions/34118025/javafx-pass-あなたがやろうとしていることをするための方法については、子から親への価値観。 –

答えて

0

textMessageDisplayを静的に使用していると思われる場合は、MainWindowControllerというオブジェクトを作成してacceesを実行してみてください。