用户界面-可编辑的组合框



我有一个单例employeeddatabase,它包含一个可观察的雇员列表。

这个ObsList填充一个可编辑的组合框的内容。

当用户从组合框中选择一个雇员并点击按钮时,我希望该雇员(来自数据库)显示在控制台的toString()中。

问题是,可编辑的组合框不允许我直接选择员工。我应该使用StringConverter将该String转换为Employee。

但是Employee已经存在于单例数据库中!我必须在数据库中搜索它们吗?或者是否有一种更简单的方法来获取Employee,就像组合框不可编辑一样,我所要做的就是cmbx.getSelectionModel().getSelectedItem()?

您不需要返回到数据库,因为您已经有一个包含在那里的EmployeeObservableList。您应该能够执行如下操作:

final ComboBox<Employee> employeeCombo = new ComboBox<>();
employeeCombo.setItems(EmployeeDatabase.getInstance().getEmployees());
employeeCombo.setConverter(new StringConverter<Employee>() {
    @Override
    public Employee fromString(String string) {
        for (Employee employee : employeeCombo.getItems()) {
            if (string.equals(employee.getName())) { // may need more logic...
                return employee ;
            }
        }
        Employee employee = new Employee(string);
        // if things are set up correctly, this call should both update the database
        // and the observable list to which the combo box points
        EmployeeDatabase.getInstance().add(employee); 
        return employee ;
    }
    @Override
    public String toString(Employee employee) {
        return employee == null : null ? employee.getName();
    }
});
employeeCombo.setEditable(true);

相关内容

  • 没有找到相关文章

最新更新