【发布时间】:2018-01-07 02:39:30
【问题描述】:
我有一个ComboBox<MyItem>,当我从ComboBox 中选择一个特殊项目时,我想显示一个DatePicker。我创建了一个扩展 ComboBox 的类,并且该类中有一个 DatePicker。我在其selectedItemProperty 添加了一个监听器:
public class CustomComboBox extends ComboBox<MyItem>{
private DatePicker datePicker;
public CustomComboBox(){
getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (MyItem.DATE.equals(newValue)) {
initDatePicker();
datePicker.show();
datePicker.requestFocus();
}
});
}
private void initDatePicker() {
if (datePicker == null) {
datePicker = new DatePicker();
datePicker.setFocusTraversable(false);
}
}
}
所以如果我选择 DATE 项目,DatePicker 应该会弹出,如果我选择一个日期,我想添加为 ComboBox 的值
首先为什么 datePicker 不弹出?第二个问题是可以将所选日期作为值添加到组合框。
【问题讨论】:
-
请显示更多代码。您将显示的代码放在哪里。我们需要一些上下文。
-
我已经编辑了我的代码,所以你可以看到整个班级。
-
您永远不会将日期选择器放在场景图中的任何位置。您需要将其添加到某个父级(显示在某处)以使其成为 UI 的一部分。
show()方法仅显示其弹出窗口,但我认为它必须实际可见才能执行任何操作。 -
啊好吧,那你知道我该如何解决这个问题吗?
-
不:我不知道你想做什么。具体来说,您希望日期选择器出现在哪里?
标签: java javafx combobox datepicker javafx-8