Java从列表选取特定值:JavaFX ComboBox无法预填充时间选项如何解决
问题根因
select()方法传参错误:你代码中写的select(equals(tempStartHour))实际传入的是boolean类型的判断结果,而select()方法只接收「元素下标(int)」或者「要匹配的元素对象(Object)」两种参数,传布尔值不可能匹配到列表中的字符串项。- 字符串格式不匹配:你的小时列表存储的是2位带前导零的字符串(如
"08"),但直接调用String.valueOf(ldt.getHour())得到的是不带前导零的字符串(如8点会得到"8"),二者字符串内容不一致,无法匹配选中。
修复代码
你只需要将时间值格式化为和列表项一致的2位字符串,再直接传入select()方法即可,同时可以按相同逻辑处理分钟选择框:
LocalDateTime ldt = appointment.getStartDate().toLocalDateTime(); LocalDate ld = ldt.toLocalDate(); UpdateAppointmentDatePicker.setValue(ld); // 小时格式化补前导零,和列表格式对齐 String tempStartHour = String.format("%02d", ldt.getHour()); updateAppointmentStartTimeHourComboBox.getSelectionModel().select(tempStartHour); // 分钟同理处理 String tempStartMin = String.format("%02d", ldt.getMinute()); updateAppointmentStartTimeMinComboBox.getSelectionModel().select(tempStartMin);
如果需要增强鲁棒性,可以先判断值是否在列表中存在再执行选中操作:
if (hoursList.contains(tempStartHour)) { updateAppointmentStartTimeHourComboBox.getSelectionModel().select(tempStartHour); } if (minList.contains(tempStartMin)) { updateAppointmentStartTimeMinComboBox.getSelectionModel().select(tempStartMin); }
内容的提问来源于stack exchange,提问作者renton56
相关产品推荐
相关产品推荐

