我甚至不确定如何正确地提出这个问题,但是当ComboBox
设置为可编辑时,是否可以在ComboBox
内的此文本字段中添加侦听器:
目前我正在为ComboBox
使用两种听众。鼠标和更改侦听器。 MouseListener
点击ComboBox
和ChangeListener
点击ComboBox
中的商品。但我不知道应该用什么样的听众来听取文字输入。
答案 0 :(得分:6)
如果您只对组合框的可编辑区域(文本字段)感兴趣,请使用ComboBox#getEditor()
。
ComboBox combobox = new ComboBox();
combobox.setEditable(true);
combobox.getEditor().textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue) {
System.out.println("Text changed");
}
});
当文本字段失去焦点时,最后一个文本将设置为组合框的valueProperty。
答案 1 :(得分:1)
在JavaFX中,您可以将通知事件附加到控件可能拥有的任何属性。在您的情况下,您需要决定是否要在组合框的可编辑值字段更改时收到通知,或者如果您希望每次用户在值字段中输入密钥时都接收密钥事件。
如果你只想在组合框的值字段发生变化的情况下对某个事件采取行动,你可以为它的valueProperty注册一个ChangeListener,它在Javadocs中定义如下:
valueProperty:此ComboBox的值定义为选中的值 如果输入不可编辑,或者可编辑,则最多 最近的用户操作:用户输入的值或最后一个用户操作 选定的项目。