Javafx 如何使文本不显示在文本字段中?

Javafx 如何使文本不显示在文本字段中?,javafx,textfield,Javafx,Textfield,嗯。。。我有一个文本字段,我希望键入的文本不会出现在组件中,只是被读取 原因是我想使用onKeyPressed事件读取一个键,并通过getEvent()显示按下的键。KeyEvent的GetName()方法 但也存在一些问题: 按Delete键时,字母“D”将从文本字段文本中删除 按空格键时,将在开头添加空格 这是我的代码: this.myTextField.setOnKeyPressed((KeyEvent event) -> { shortcut = event.getC

嗯。。。我有一个文本字段,我希望键入的文本不会出现在组件中,只是被读取

原因是我想使用onKeyPressed事件读取一个键,并通过getEvent()显示按下的键。KeyEvent的GetName()方法

但也存在一些问题:

  • 按Delete键时,字母“D”将从文本字段文本中删除
  • 按空格键时,将在开头添加空格
这是我的代码:

this.myTextField.setOnKeyPressed((KeyEvent event) -> {
    shortcut = event.getCode();
    myTextField.setText(shortcut.getName());
});
  • 快捷键是一个键码
  • myTextField是一个TextField

谢谢你的回答

使用
setOnKeyReleased
而不是
setOnKeyPressed
方法

textField.setOnKeyReleased(e -> {
            KeyCode key = e.getCode();
            textField.setText(key.getName());
        });

使用
setOnKeyReleased
代替
setOnKeyPressed
方法

textField.setOnKeyReleased(e -> {
            KeyCode key = e.getCode();
            textField.setText(key.getName());
        });
嗯。。。 我找到了一个解决方案,非常简单

我只把文本字段改成了按钮。是的,就是这样(当然有一点CSS)

按钮具有相同的事件,并且可以设置文本。这就是我所需要的。

嗯。。。 我找到了一个解决方案,非常简单

我只把文本字段改成了按钮。是的,就是这样(当然有一点CSS)


按钮具有相同的事件,并且可以设置文本。这就是我所需要的。

我忘了提到我正在使用组合键,比如Ctrl+p,而这个onKeyReleased事件不允许我使用这个。更重要的是,它只是在调用事件后隐藏内容,因此如果用户按住键(如“c”),它将继续显示“cC”。TextFiel没有办法不显示它输入的内容吗?我忘了提到我正在使用组合键,比如Ctrl+P,而这个onKeyReleased事件不允许我使用这个。更重要的是,它只是在调用事件后隐藏内容,因此如果用户按住键(如“c”),它将继续显示“cC”。TextFiel没有办法不显示它正在输入的内容吗?你能抓住按下的键并清除
TextField
?或者使用类似的方法吗。这样,您可以获取文本,但会使所有文本无效。然后只需将
TextField
的文本设置为空字符串。我认为添加约束不是一个好的解决方案,因为Delete键将继续删除第一个字母。至于清除TextField内容的选项,我甚至尝试过,但似乎在调用我的事件后调用了更改TextField内容的线程,所以即使清除内容并插入新的,TextField将在之后进行更改。但是我找到了一个解决方案,我正在编辑一个答案:)您可以抓住按下的键并清除
TextField
?或者使用类似的方法。这样,您可以获取文本,但会使所有文本无效。然后只需将
TextField
的文本设置为空字符串。我认为添加约束不是一个好的解决方案,因为Delete键将继续删除第一个字母。至于清除TextField内容的选项,我甚至尝试过,但似乎在调用我的事件后调用了更改TextField内容的线程,因此即使清除内容并插入新内容,TextField也会在之后进行更改。但我找到了一个解决方案,我正在编辑答案:)虽然您的解决方案可能有效,我不建议养成这样复杂的解决方法的习惯。更好的解决方案是只监听击键,然后清除TextField。我尝试清除TextField,但java线程会在我的事件运行后更改对象的内容。此外,我的代码中唯一的更改是对象的声明,在声明中,我从TextField切换到Button,虽然你的解决方案可能有效,但我不建议你养成这样复杂的解决方法的习惯。更好的解决方案是只侦听击键,然后清除TextField。我尝试清除TextField,但java线程会在事件运行后更改对象的内容。此外,我的代码中唯一的更改是对象的声明,在声明中,我从TextField切换到Button,以及对象的getter和setter。