0
我正在开发简单的JavaFX应用程序。在我的主视图中我有桌面视图。在行选择方法selectedEmployeeDetails()被调用。它填写显示员工详细信息的标签(姓名,姓氏等)。当我启动我的应用程序并选择第一行(仅第一行)时,什么都没有发生。当我选择secound行时,一切都很好。然后,当我再次选择第一行时,所有工作都正常。这里是我的代码在主视图控制器的初始化方法中。JavaFX和表视图 - 首次选择不起作用
@FXML
private void initialize() {
dialog.setMaximized();
dialog.setTitle("Test");
this.employeeModel.loadData();
employees = this.employeeModel.getEmployees();
employeeTableView.setItems(employees);
this.employeeFirstName.setCellValueFactory(
new PropertyValueFactory<Employee, String>("name"));
this.employeeFirstName.setCellFactory(TextFieldTableCell.forTableColumn());
this.employeeLastName.setCellValueFactory(
new PropertyValueFactory<Employee, String>("lastname"));
this.employeeLastName.setCellFactory(TextFieldTableCell.forTableColumn());
this.employeeFatherClmn.setCellValueFactory(
new PropertyValueFactory<Employee, String>("fathersName"));
this.employeeFatherClmn.setCellFactory(TextFieldTableCell.forTableColumn());
this.employeeJmbgClmn.setCellValueFactory(
new PropertyValueFactory<Employee, String>("jmbg"));
this.employeeJmbgClmn.setCellFactory(TextFieldTableCell.forTableColumn());
this.employeeContractClmn.setCellValueFactory(
new PropertyValueFactory<Employee, String>("contractType"));
this.employeeContractClmn.setCellFactory(TextFieldTableCell.forTableColumn());
this.employeePositionClmn.setCellValueFactory(
new PropertyValueFactory<Employee, String>("position"));
this.employeePositionClmn.setCellFactory(TextFieldTableCell.forTableColumn());
this.employeeStatusClmn.setCellValueFactory(
new PropertyValueFactory<Employee, String>("status"));
this.employeeStatusClmn.setCellFactory(TextFieldTableCell.forTableColumn());
//employeeTableView.getColumns().addAll(employeeFirstName, employeeLastName);
selectedEmployeeDetails(null);
//Add change listener
employeeTableView.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> {
//Check whether item is selected and set value of selected item to Label
if (employeeTableView.getSelectionModel().getSelectedItem() != null) {
selectedEmployeeDetails(newValue);
System.out.println(employeeTableView.getSelectionModel().getSelectedIndex());
}
else
{
System.out.println("EROR");
}
});
}
有人可以帮我看看什么是主要的原因我的第一行不会火selectedEmployeeDetails()方法的第一次选择。
编辑
private void selectedEmployeeDetails(Employee employee)
{
if(employee != null)
{
this.employeeDetailLastname.setText(employee.getLastname());
this.emloyeeDetailFathersName.setText(employee.getFathersName());
this.employeeDetailName.setText(employee.getName());
this.emloyeeDetailJmbg.setText(employee.getJmbg());
this.emloyeeDetailPosition.setText(employee.getPosition());
this.employeeDetailContractType.setText(employee.getContractType());
this.employeeDetailStatus.setText(employee.getStatus());
}
else
{
this.employeeDetailLastname.setText("");
this.emloyeeDetailFathersName.setText("");
this.employeeDetailName.setText("");
this.emloyeeDetailJmbg.setText("");
this.emloyeeDetailPosition.setText("");
this.employeeDetailContractType.setText("");
this.employeeDetailStatus.setText("");
}
}
谢谢James_D。你是stackoverflow传说:) – Sysrq147 2014-10-05 14:26:29