I try to refresh my table after adding new row but I get this error in line
codeCol.setCellValueFactory(new PropertyValueFactory<>("userId")); 
when I call method loadUserData() from another controller. 
First time it works ok.. only when I refresh the table. Could you pls help ...
public class UserTableController implements Initializable{
    @FXML
    private TableView<UserClass> tableView;
    @FXML
    private TableColumn<UserClass, String> codeCol;
    @FXML
    private TableColumn<UserClass, String> firstnameCol;
    @FXML
    private TableColumn<UserClass, String> lastnameCol;
    @FXML
    private TableColumn<UserClass, String> companyCol;
    @FXML
    private TableColumn<UserClass, String> usernameCol;
    @FXML
    private TableColumn<UserClass, String> emailCol;
    @FXML
    private TableColumn<UserClass, String> mobileCol;
    @FXML
    private TableColumn<UserClass, String> landlineCol;
    @FXML
    private TableColumn<UserClass, Boolean> adminCal;
    public ObservableList<UserClass> list;
    private  DatabaseHandler handler;
    private  Main mainApp;
    private MainController mainCont;
    private Stage stage;
    @FXML
    public  HBox bottomPane;
    @FXML
    private JFXButton addUserButton;
    @FXML
    public void initialize(URL url, ResourceBundle rb) {
        loadUserData();
    }
     public void setMainApp(Main mainApp) {
         //this.mainApp = mainApp;
        // pass the main app to the drawerContentController:
        mainCont.setMainApp(mainApp);
    }
     public void loadUserData() {
        handler = DatabaseHandler.getInstance();
        list = FXCollections.observableArrayList();
        list.clear();
        String qu = "select * from Users";
        ResultSet rs = handler.execQuery(qu);
         int counter = 0;
        try {
            while (rs.next()) {
                String nuserId = String.valueOf(rs.getInt("userId"));
                String nfirstName = rs.getString("firstname");
                String nlastName = rs.getString("lastName");
                String ncompanyName = rs.getString("companyName");
                String nuserName = rs.getString("userName");
                String nemail = rs.getString("email");
                String nmobile = rs.getString("mobile");
                String nlandline = rs.getString("landline");
                Boolean nadmin = rs.getBoolean("isadmin");
                counter = counter + 1;
                list.add(new UserClass(nuserId, nfirstName, nlastName, ncompanyName, nuserName, nemail, nmobile, nlandline, nadmin));
            }
        } catch (SQLException e) {
            System.out.println("Error loadData : " + e);
        }
        codeCol.setCellValueFactory(new PropertyValueFactory<>("userId"));
        System.out.println("test loadUserData 1");
        firstnameCol.setCellValueFactory(new PropertyValueFactory<>("FirstName"));
        lastnameCol.setCellValueFactory(new PropertyValueFactory<>("lastName"));
        companyCol.setCellValueFactory(new PropertyValueFactory<>("companyName"));
        usernameCol.setCellValueFactory(new PropertyValueFactory<>("userName"));
        emailCol.setCellValueFactory(new PropertyValueFactory<>("email"));
        mobileCol.setCellValueFactory(new PropertyValueFactory<>("mobile"));
        landlineCol.setCellValueFactory(new PropertyValueFactory<>("LandLine"));
      //  adminCal.setCellValueFactory(new PropertyValueFactory<>("IsAdmin"));
     // adminCal.setCellFactory(new );
     // ==== SINGLE? (CHECH BOX) ===
        adminCal.setCellValueFactory((CellDataFeatures<UserClass, Boolean> param) -> {
            UserClass userClass = param.getValue();
            SimpleBooleanProperty booleanProp = new SimpleBooleanProperty(userClass.getIsAdmin());
            // Note: singleCol.setOnEditCommit(): Not work for
            // CheckBoxTableCell.
            // When "Single?" column change.
            booleanProp.addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
                userClass.setIsAdmin(newValue);
            });
            return booleanProp;
        });
        adminCal.setCellFactory((TableColumn<UserClass, Boolean> p) -> {
            CheckBoxTableCell<UserClass, Boolean> cell = new CheckBoxTableCell<UserClass, Boolean>();
            cell.setAlignment(Pos.CENTER);
            return cell;
        } //
        );
        tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
        tableView.setItems(null);
        tableView.setItems(list);
    }
    @FXML
    private void addUserButtonAction(ActionEvent event) throws IOException {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(Main.class.getResource("/Users/UserDialog.fxml"));
        BorderPane addNewUser = loader.load();
        //mainLayout.setCenter(mainItems);
        Stage addDialogStage = new Stage();
        addDialogStage.setTitle("Add New User");
        addDialogStage.initModality(Modality.WINDOW_MODAL);// windows model make my new stage allows on top
        addDialogStage.initOwner(stage);
        addDialogStage.initStyle(StageStyle.UNDECORATED);
        Scene scene = new Scene(addNewUser);
        addDialogStage.setScene(scene);
        addDialogStage.showAndWait();
    }
}
and from another controller I call This loadData to refresh my tableview but got this error
Stack Trace:
java.lang.NullPointerException 
at Users.UserTableController.loadUserData(UserTableController.java:128) 
at Users.UserDialogController.saveUser(UserDialogController.java:146) 
at Users.UserDialogController.saveButtonAction(UserDialogController.java:85) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke
/------------------
public class UserDialogController implements Initializable {
private static Main mainApp;
DatabaseHandler databaseHandler;
private MainController mainCont;
private UserTableController userTableController;
@FXML
private BorderPane borderPane;
@FXML
private Button closeButton;
@FXML
private JFXTextField txtfirstname;
@FXML
private JFXTextField txtlastname;
@FXML
private JFXTextField txtcompany;
@FXML
private JFXTextField txtusername;
@FXML
private JFXPasswordField txtpassword;
@FXML
private JFXTextField txtemail;
@FXML
private JFXTextField txtmobile;
@FXML
private JFXTextField txtlandline;
@FXML
private CheckBox cbxadmin;
 public UserDialogController() {
    databaseHandler = DatabaseHandler.getInstance();
   // mainController = new MainController();
     userTableController =  new UserTableController();
    mainApp = new Main();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}    
@FXML
private void saveButtonAction(ActionEvent event) {
    saveUser();
}
@FXML
private void closeImageViewAction(MouseEvent event) {
    closeAction();
}
@FXML
private void closeButtonAction(ActionEvent event) {
   closeAction();
}
void closeAction() {
    Stage stage = (Stage) closeButton.getScene().getWindow();
    stage.close();
}
void saveUser(){
   //  System.out.println("USERNAME In User Dialog : " + mainApp.getUserNAME());
//    System.out.println(" My Action  :" + mainApp.getMyAction());
    String xFirstFame = txtfirstname.getText();
    String xLastName = txtlastname.getText();
    String xCompany = txtcompany.getText();
    String xUsername = txtusername.getText();
    String xPassword = txtpassword.getText();
    String xEmail = txtemail.getText();
    String xMobile = txtmobile.getText();
    String xLandLine = txtlandline.getText();
    int xAdmin = 0;
    if (cbxadmin.isSelected()) {
        xAdmin = 1;
    }
    String st = "INSERT INTO Users (FirstName,LastName,CompanyName,UserName,Password,Email,Mobile,LandLine,isAdmin ) VALUES ("
            + "'" + xFirstFame + "',"
            + "'" + xLastName + "',"
            + "'" + xCompany + "',"
            + "'" + xUsername + "',"
            + "'" + xPassword + "',"
            + "'" + xEmail + "',"
            + "'" + xMobile + "',"
            + "'" + xLandLine + "',"
            + "'" + xAdmin + "'"
            + " )";
    if (databaseHandler.execAction(st)) {
        try {
            Alert alert = new Alert(Alert.AlertType.INFORMATION);
            alert.setHeaderText(null);
            alert.setContentText("Success ..Saved");
            alert.showAndWait();
            System.out.println("test 1");
           userTableController.loadUserData();
       //       mainController.tableView.refresh();
            closeAction();
        } catch (Exception e) {
            System.out.println("Error in add User : " + e);
            e.printStackTrace();
        }
    } else {
        Alert alert = new Alert(Alert.AlertType.ERROR);
        alert.setHeaderText(null);
        alert.setContentText("Failed ....");
        alert.showAndWait();
    }
}
}
