2016-03-12 4 views
0

Я пробовал код для создания combobox с Id и Value Pair. Теперь я хочу установить значение combobox с указанным Id. Пример: Я хочу, чтобы установить значение выпадающий список с именем сотрудника, чья зарплата составляет 1400,0Как установить значение ComboBox с заданным значением?

package demo; 

import javafx.application.Application; 
import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.scene.Scene; 
import javafx.scene.control.ComboBox; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

/** 
* 
* @author vikassingh 
*/ 
public class Demo extends Application { 

    private final ObservableList<Employee> data 
      = FXCollections.observableArrayList(
        new Employee("Azamat", 2200.15), 
        new Employee("Veli", 1400.0), 
        new Employee("Nurbek", 900.5)); 

    @Override 
    public void start(Stage primaryStage) { 
     ComboBox<Employee> combobox = new ComboBox<>(data); 

     // testing 
     //combobox.getSelectionModel().selectFirst(); 
     //combobox.setValue(1400.0); // How to set value with specific Id Passed 
     // End testing 

     StackPane root = new StackPane(); 
     root.getChildren().add(combobox); 
     primaryStage.setScene(new Scene(root, 300, 250)); 
     primaryStage.show(); 
    } 

    public static class Employee { 

     private String name; 
     private Double salary; 

     @Override 
     public String toString() { 
      return name; 
     } 

     public Employee(String name, Double salary) { 
      this.name = name; 
      this.salary = salary; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public Double getSalary() { 
      return salary; 
     } 

     public void setSalary(Double salary) { 
      this.salary = salary; 
     } 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+0

Возможного дубликат [значения COMBOBOX Display из чисел] (http://stackoverflow.com/questions/32561396/display-combobox-values-from-numbers) – ItachiUchiha

+0

Если у вас есть сеттеры для свойств '' Employee', вы должны реализовать свойства как свойства javafx, так как это простой способ добавить шаблон наблюдателя в ваш класс, который необходим для правильного обновления представления. Также: это о том, как правильно отобразить «Работника» или найти подходящую зарплату? – fabian

+0

@fabian: Речь идет о поиске сотрудника с правильной зарплатой, пожалуйста, дайте некоторый код, чтобы я мог попробовать. –

ответ

1

найти правильный Employee в data списке может быть сделано, используя тот же метод вы бы использовать для любого другого Collection/List: итерации по коллекции и найти первый элемент, соответствующий критерию. Streams API обеспечивает простой способ сделать это:

Predicate<Employee> matcher = employee -> employee.getSalary() == 1400d; 
Optional<Employee> opt = data.stream().filter(matcher).findAny(); 

combobox.setValue(opt.orElse(null)); // set found employee or null, if none was found. 
Смежные вопросы