Combo-box key value pair in JavaFX 2

前端 未结 3 1427
梦谈多话
梦谈多话 2020-11-30 06:13

I am just starting to learn JavaFX 2.
Now I am trying to build a sample application. Then I got stuck in combobox.
I did not find any reference to key value pair for

3条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-30 06:26

    There is another solution, implementing a StringConverter. It's very useful for objects:

    public class Product {
    
        private String code;
        private String name;
    
        public Product(String code, String name) {
            this.code = code;
            this.name = name;
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }
    

    Converter implementation:

    public class ProductConverter extends StringConverter {
    
        /** Cache of Products */
        private Map productMap = new HashMap();
    
        @Override
        public String toString(Product product) {
            productMap.put(product.getName(), product);
            return product.getName();
        }
    
        @Override
        public Product fromString(String name) {
            return productMap.get(name);
        }
    
    }
    

    Code in view:

        ComboBox cboProducts  = new ComboBox;
        cboProducts.setConverter(new ProductConverter());
        cboProducts.getItems().addAll(serviceManager.getProductList());
    

    To get the value of the product, you can call getValue() method:

    cboProducts.getValue()
    

提交回复
热议问题