2016-05-17 25 views
0

Ich habe einige Probleme mit javaFX, um eine TabelleColumn mit einigen Daten entsprechend einem ausgewählten Index aus einer anderen Tabelle zu füllen. Die Tabelle beginnt leer. und dann möchte ich es füllen, wenn der Benutzer eine Taste drückt. (So ​​weit, so gut) hier, was die Taste Controller wie folgt aussieht:javaFX Füllen/Aktualisieren Tableview

@FXML 
private void handleNextRequest() { 
    int selectedIndex = headingTable.getSelectionModel().getSelectedIndex(); 
    if (selectedIndex >= 0) 
     mainApp.updateEntity(headingColumn.getCellData(selectedIndex)); 
    entityTable.setItems(mainApp.getEntity()); 
} 

So dies eine Funktion aus der Hauptklasse ruft meine beobachtbaren Liste, der Aktualisierung. Der selectedIndex-Parameter wird verwendet, um zu bestimmen, welche Daten ich in die Liste laden muss (diese Daten befinden sich in einer Datenbank, auf die ich über einen Webdienst zugreifen kann, daher die "api" (was gut funktioniert)). Also hier ist es, was diese Funktion wie folgt aussieht:

public void updateEntity(String header){ 
    try { 
     this.entity.clear(); 
     int i = 0; 
     while(header != heading.get(i).getName()){ 
      i++; 
     }    
     api.getEntity(new URL(heading.get(i).getURL()), this.entity, primaryStage); 
    } catch(MalformedURLException e){} 
} 

Und bis zu diesem Punkt alles ist funktional. Beim Drücken der Taste wird die Funktion korrekt aufgerufen und die beobachtbare Liste (Entität) wird korrekt aktualisiert. (überprüft und erneut überprüft)

und dann ... boom. die "setItems" -Funktion (zurück zum Button-Controller) scheint nicht zu gefallen, was ich getan habe und werfen eine NullPointerException.

Wenn jemand mir helfen könnte zu verstehen, was das Problem hier sein könnte, würde ich mich freuen!

EDIT:

hier ist der initialize Code, den ich habe: Ich habe dies in der Methode initialize:

@FXML 
private void initialize() { 
    headingColumn.setCellValueFactory(CellData -> CellData.getValue().nameProperty()); 
    entityColumn.setCellValueFactory(CellData -> CellData.getValue().nameProperty()); 
    showTableDetails(null); 
    headingTable.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> showTableDetails(newValue)); 
} 

und beide entityTable und entityColumn richtig erklärt.

+0

Wohin vergeben Sie "entity"? Es ist in 'updateEntity' gelöscht, aber ich kann nicht sehen, dass es neu zugewiesen wird. – jns

+0

Es ist in der Funktion "api.getEntity" neu zugeordnet. Es funktioniert gut. gedruckte Elemente aus der Liste zeigen danach den richtigen Inhalt. –

+0

Können Sie den Code posten, der die Tabelle initialisiert? – jns

Antwort

0

Okay, ich habe es herausgefunden. Hübscher dummer Fehler, aber die fx:id="entityTable" fehlte in der fxml-Datei. danke, dass du mir geholfen hast, das zu erkennen!