这段代码就是我想做的。在输入可编辑的ComboBox时,我想释放ENTER并处理输入事件。但是,我无法让应用程序响应,没有打印消息。我为一个文本框写了基本相同的代码,它工作正常,打印了一条消息。我还为ComboBox的任何KeyReleased事件编写了处理程序,并且工作正常,打印了一条消息。问题是输入键。为什么这个代码在可编辑的ComboBox中没有做我想要的?
@FXML
ComboBox comboBox;
public class ScreenController implements Initializable {
@Override
public void initialize(...) {
...
comboBox.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
if (ke.getCode == KeyCode.ENTER) {
System.out.println("ENTER was released");
}
}
});
}
}
答案 0 :(得分:2)
我遇到了同样的错误/功能。幸运的是我找到了this posting
解决方案不是通过comboBox.setOnKeyReleased()
注册您的处理程序。相反,使用EventFilter:
comboBox.addEventFilter(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
if (ke.getCode == KeyCode.ENTER) {
System.out.println("ENTER was released");
}
}
});
这实际上按预期工作。
答案 1 :(得分:1)
它看起来像是一个JavaFX错误。 setOnKeyPressed不起作用。看这个 javafx jira