Javafx 在JFXTextField中禁用键盘空格键类型
我需要禁用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
...
@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!我可以将问题的链接添加为答案,我可以接受它为正确答案。最好将此问题标记为重复。从长远来看,这将帮助更多人:)是的,这是一个解决方案,但它实际上是在文本字段中键入空格。我想要的是禁用它。是的,这是一个解决方案,但它实际上是在文本字段中键入空格。我想要的是禁用它。