JavaFX中的TAB事件过滤器forTextField

时间:2015-07-11 19:17:44

标签: java javafx

我想验证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的全部价值。

1 个答案:

答案 0 :(得分:1)

传递给过滤器的值仅在将过滤器添加到组件时设置。在您的情况下,TextField可能为空,因此不会显示任何内容。要显示当前内容,您只需调用getText

即可
System.out.println(textField.getText());