2016-04-07 18 views
0

In meiner JavaFX-App bekomme ich eine NullPointerException, die ich nicht für das Leben von mir herausfinden kann. Die App ist eine einfache Pseudo-Datenbank, die in diesem Fall Entwicklereinträge in einer Tabelle mit ihren verschiedenen Daten anzeigt, und der Benutzer kann ein sekundäres Fenster öffnen, um einige Eingaben zu machen und somit einen neuen Eintrag zu erstellen. Code des Hauptfensters Controller:JavaFX FXML App: seltsame NullPointer-Ausnahme an einem FXML-Knoten

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")); 
    } 
/* 
*/ 
} 

Code des sekundären Fenster, in dem der Benutzer die Daten für einen neuen Entwickler-Eingänge:

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)); 
     } 

    } 
} 

Was dies tut, ist eine Nullpointer am

Linie werfen
MainWindowController.textMessageDisplay.setText("Name and password must not be empty!"); 

, sobald die Schaltfläche Erstellen gedrückt wird und die Eingabetextfelder leer sind. Warum? Alles ist in Ordnung für mich, TextMessageDisplay wird in MainWindowControlledle deklariert und aus der FXML-Datei initialisiert, ich kann es mit seinem Standardtext im App-Fenster sehen. Also was ist los, was fehlt mir hier?

+0

Ich sagte bereits, es scheint mir, dass ich die Deklaration und Initialisierung richtig gemacht habe, dass die Variable tatsächlich auf ein vorhandenes Objekt zeigt. Könnten Sie vielleicht näher erläutern, was genau in meinem Code falsch ist? – Sargon1

+0

Siehe http://stackoverflow.com/questions/23105433/javafx-8-compatibility-issues-fxml-static-fields für warum Sie die Ausnahme erhalten und http://stackoverflow.com/questions/34118025/javafx-pass- values-from-child-to-parent für Möglichkeiten, zu tun, was Sie versuchen zu tun. –

Antwort

0

Ich denke, Sie verwenden textMessageDisplay statisch, dass das Problem erstellt, versuchen Sie, indem Sie das Objekt MainWindowController erstellen.

Verwandte Themen