You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:54:03