Javafx 在JFXTextField中禁用键盘空格键类型

Javafx 在JFXTextField中禁用键盘空格键类型,javafx,keyboard,textfield,detection,Javafx,Keyboard,Textfield,Detection,我需要禁用JFXTextField中的空格。 我使用以下代码: ... @FXML private JFXTextField valueTextField; valueTextField.setKeyListenerForSpace(); private void setKeyListenerForSpace(){ valueTextField.setOnKeyPressed( (event) -> { if (event.getCode() == KeyCo

我需要禁用JFXTextField中的空格。 我使用以下代码:

...
@FXML
private JFXTextField valueTextField;

valueTextField.setKeyListenerForSpace();

private void setKeyListenerForSpace(){

    valueTextField.setOnKeyPressed( (event) -> {
        if (event.getCode() == KeyCode.SPACE) {
            System.out.println("Spacebar key detected!");
            event.consume();
        }
    });

}
尽管程序检测到空格键被按下,但它正在文本字段中键入空格

有什么建议吗?

setOnKeyPressed()
是一个事件处理程序设置程序;您需要一个事件过滤器,它将在事件捕获阶段截获此按键事件,防止此控件在事件冒泡阶段接收此事件

valueTextField.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
    if (event.getCode() == KeyCode.SPACE) {
        System.out.println("Spacebar key detected!");
        event.consume();
    }
});
有关详细信息,请阅读。

setOnKeyPressed()
是一个事件处理程序设置程序;您需要一个事件过滤器,它将在事件捕获阶段截获此按键事件,防止此控件在事件冒泡阶段接收此事件

valueTextField.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
    if (event.getCode() == KeyCode.SPACE) {
        System.out.println("Spacebar key detected!");
        event.consume();
    }
});

有关详细信息,请阅读。

您需要使用事件筛选器中空格字符的
键键入的事件,因为此类事件负责修改
文本属性:

valueTextField.addEventFilter(KeyEvent.KEY_TYPED, evt -> {
    if (" ".equals(evt.getCharacter())) {
        System.out.println("space typed");
        evt.consume();
    }
});

valueTextField.setKeyListenerForSpace()应产生编译时错误。

您需要在事件筛选器中使用空格字符的
键类型的事件,因为此类事件负责修改
文本属性:

valueTextField.addEventFilter(KeyEvent.KEY_TYPED, evt -> {
    if (" ".equals(evt.getCharacter())) {
        System.out.println("space typed");
        evt.consume();
    }
});

valueTextField.setKeyListenerForSpace()应产生编译时错误。

如果检测到空格键,请删除空格:

valueTextField.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
        if (event.getCode() == KeyCode.SPACE) {
            valueTextField.setText(valueTextField.getText().substring(0, valueTextField.getLength()-1));
        }
});

如果检测到空格键,请删除空格:

valueTextField.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
        if (event.getCode() == KeyCode.SPACE) {
            valueTextField.setText(valueTextField.getText().substring(0, valueTextField.getLength()-1));
        }
});

仍然不起作用:-(.检测到空格键,但仍在文本字段中键入它。@user6127833请参见。是的!这很有效。非常感谢Jai!我可以将问题的链接添加为正确答案。最好将此问题标记为重复。从长远来看,它将帮助更多人:)仍然不起作用:-(.检测到空格键,但仍在文本字段中键入。@user6127833请看。是的!这很有魅力。非常感谢Jai!我可以将问题的链接添加为答案,我可以接受它为正确答案。最好将此问题标记为重复。从长远来看,这将帮助更多人:)是的,这是一个解决方案,但它实际上是在文本字段中键入空格。我想要的是禁用它。是的,这是一个解决方案,但它实际上是在文本字段中键入空格。我想要的是禁用它。