Vaadin中如何将ComboBox选中项名称显示到TextField?
解决方法:将ComboBox选中的Item名称显示到只读TextField
你的问题出在valueChangeListener的取值逻辑上——你调用了event.toString(),这会返回整个ComponentValueChangeEvent对象的字符串表示,而非选中Item的名称。
修正要点:
- 不要直接对
event调用toString(),而是通过event.getValue()获取选中的Item实例 - 调用
Item类的getItemName()方法提取名称,再赋值给TextField - 注意原代码中
itemList.setItemLabelGenerator(Item::getItemName)末尾缺失分号,需补上以避免编译错误
修正后的完整代码:
// 文本框 TextField quantityStock = new TextField("Available Stock"); // 下拉框 ComboBox<Item> itemList = new ComboBox<>("Item"); // 表单代码 public SoldItemForm(List<Item> allItems) { addClassName("item-form"); // 下拉框字段 itemList.setItems(allItems); itemList.setItemLabelGenerator(Item::getItemName); // 补上缺失的分号 itemList.addValueChangeListener(event->{ if (event.getValue() != null){ // 获取选中的Item实例,调用getItemName()拿到名称 quantityStock.setValue(event.getValue().getItemName()); } else { // 可选:取消选中时清空TextField quantityStock.clear(); } }); // 库存字段 quantityStock.setReadOnly(true); add(itemList, quantityStock); }
修改后,当你在ComboBox中选择Item时,TextField会正确显示选中项的名称,而非事件对象的信息。
内容的提问来源于stack exchange,提问作者Elipsis
相关产品推荐
相关产品推荐

