在JavaFX中使第一个控件获得焦点

3

我的布局如下:

enter image description here

我希望在第一次按下TAB键时,焦点能够集中在“公司名称”文本框上,但现在焦点却在“添加”按钮上,我该怎么处理呢?

我尝试了以下代码:

    ChangeFocus(mTextFieldCompanyName, mTextAreaAboutUs);
    ChangeFocus(mTextAreaAboutUs, mTextAreaContactUs);
    ChangeFocus(mTextAreaContactUs, mButtonVideo);
    ChangeFocus(mButtonVideo, mButtonImage);
    ChangeFocus(mButtonImage, mButtonSave);
    public void ChangeFocus(Control mControlFrom,final Control mControlTo)
    {

   mControlFrom.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {

         @Override
         public void handle(KeyEvent event)
         {
             if (event.getCode() == KeyCode.TAB)
             {
                System.out.println("TAB pressed");
                mControlTo.requestFocus();
                event.consume(); // do nothing
         }
       }
     });

     }
1个回答

7
尝试将您的 mTextFieldCompanyName 包装在 Platform.runLater() 中。
Platform.runLater(new Runnable() {
    @Override
    public void run() {
        mTextFieldCompanyName.requestFocus();  
    }   
});

希望这有所帮助 :)

@UnKnown 在FXML中无法实现上述操作。 - ItachiUchiha
有没有其他方法可以聚焦到使用FXML添加的textField上? - Asif Mushtaq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接