【问题标题】:How to get an editable ComboBox to respond to ENTER如何让可编辑的 ComboBox 响应 ENTER
【发布时间】:2013-09-09 13:18:31
【问题描述】:

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

【问题讨论】:

    标签: event-handling javafx keyevent enter


    【解决方案1】:

    我遇到了同样的错误/功能。幸运的是我找到了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");
                }
            }
     });
    

    这实际上按预期工作。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-04
        • 2010-09-10
        • 1970-01-01
        • 2023-04-11
        • 2010-10-25
        • 2019-12-12
        • 1970-01-01
        相关资源
        最近更新 更多