我想验证JavaFX中的用户输入,所以对于我的TextField我使用的事件过滤器如下代码
@FXML
private TextField textField;
@FXML
void initialize()
{
textField.addEventFilter(KeyEvent.KEY_PRESSED, numeric_tab(textField.getText().toString()));
}
public EventHandler<KeyEvent> numeric_tab(String number)
{
return new EventHandler<KeyEvent>()
{
@Override
public void handle(KeyEvent e)
{
if (e.getCode() == KeyCode.TAB)
{
System.out.println("Cursor is here");
System.out.println(number);
}
}
};
}
正如你所看到的,我为TextField添加一个事件过滤器,所以每当用户按任意键盘键时我们都会转到numeric_tab方法,在里面我们检查按下的键是否是Tab键,我们应该打印参数通过事件过滤器传递。
但是我遇到了问题,虽然我的应用程序打印了#34;光标在这里&#34;在控制台上,但它不会打印TextField的值。 (再次让我说TextField的值已经由事件过滤器发送)
为什么呢?为什么我无法获得TextField的全部价值。
答案 0 :(得分:1)
传递给过滤器的值仅在将过滤器添加到组件时设置。在您的情况下,TextField
可能为空,因此不会显示任何内容。要显示当前内容,您只需调用getText
System.out.println(textField.getText());