2017-02-16 3 views
0

моего контроллераNullPointerException setItems на ObservableList и TableView

public class CustomerFXMLController implements Initializable 

FXML имеет следующие DEFS

@FXML private TableView<CustomerTableModel> customersTable; 
private ObservableList<CustomerTableModel> customerList = FXCollections.observableArrayList(); 

private void retrieveAllCustomers() { 
     try { 
      customerList = FXCollections.observableArrayList(CustomersJerseyClient.findAllCustomers()); 
      customersTable.setItems(customerList); 
     } catch (NullPointerException e) { 
      DialogUtil.buildExceptionDialog("An error has occurred", "customersTable seems empty", e).showAndWait(); 
      System.exit(-1); 
     } catch (RuntimeException e) { 
      DialogUtil.buildExceptionDialog("An error has occurred", "Failed to connect to web service", e).showAndWait(); 
      System.exit(-1); 
     } 
    } 

Я получаю NullPointerException, когда я хочу, чтобы скопировать CustomerList, что я извлеченный с джерси (это имеет массив и содержимое на этой стадии) в этой строке

customersTable.setItems(customerList); 

My kn owledge Java недостаточно, чтобы понять, почему setItems не работает!
Любая помощь, пожалуйста,

+1

Где вы инициализируете 'customersTable'? Если вы его не инициализируете, по умолчанию будет установлено значение «null», что объясняет «NullPointerException». –

+0

Это initialazation "@FXML " @Override общественного недействительными инициализации (URL место, ResourceBundle ресурсы) { initializeTable(); attachTxtSearchListener(); retrieveAllCustomers(); } – JPB

+0

Возможно, вы можете дать мне образец того, как правильно инициализировать? – JPB

ответ

0

Как null является допустимым значением для customerList, я полагаю, что customersTable является null.

Если вы вызываете retrieveAllCustomers от конструктора, customersTable будет null. Назовите его с initialize() вместо этого, который запускается после того, как все элементы @FXML были созданы и установлены.

+0

Я вызвал 'retrieveAllCustomers' из' public void initialize() 'как в приведенном выше комментарии – JPB

+0

По вашему решению я включил код в' initialize() ', но он не имеет никакого эффекта – JPB

+0

Есть ли несоответствие имени? Если имя 'customersTable' не используется в FXML, оно все равно будет« null »в этой точке. –

Смежные вопросы