如何获得一个可编辑的ComboBox来响应ENTER

时间:2013-09-09 13:18:32

标签: event-handling javafx keyevent enter

这段代码就是我想做的。在输入可编辑的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");
            }
            }
        }); 
    }
}

2 个答案:

答案 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