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