1

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

2 回答 2

2

我遇到了同样的错误/功能。幸运的是,我找到了这个帖子 解决方案不是通过comboBox.setOnKeyReleased(). 相反,使用事件过滤器:

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");
            }
        }
 });

这实际上按预期工作。

于 2014-08-24T14:13:45.187 回答
1

它看起来是一个 JavaFX 错误。setOnKeyPressed 不起作用。看看这个 javafx jira

于 2013-09-09T13:39:22.193 回答