2015-11-12 64 views
0

请看下面的示例代码。启动应用程序并关注其中一个文本字段。现在点击菜单。重点仍然放在TextField上。然而,我们的TextField触发了它在焦点丢失方面的价值。如何实现在菜单或工具栏上单击项目会触发TextField上的焦点丢失?打开菜单时,JavaFX焦点在TextField上发生变化

public class FocusApp extends Application 
{ 

    @Override 
    public void start(Stage primaryStage) throws Exception 
    { 
     TextField l_text1 = new TextField("TextField 1"); 
     TextField l_text2 = new TextField("TextField 2"); 
     l_text1.focusedProperty().addListener((a,b,c) -> { 
      System.out.println("Focus change on TextField 1"); 
     }); 
     l_text2.focusedProperty().addListener((a,b,c) -> { 
      System.out.println("Focus change on TextField 2"); 
     }); 

     MenuBar l_menuBar = new MenuBar(); 
     l_menuBar.setFocusTraversable(true); 
     Menu l_menu = new Menu("_Menu"); 
     l_menu.getItems().add(new MenuItem("_Item")); 
     l_menuBar.getMenus().add(l_menu); 
     VBox l_vbox = new VBox(l_menuBar, l_text1, l_text2); 
     primaryStage.setScene(new Scene(l_vbox)); 
     primaryStage.show(); 
    } 



    public static void main(String[] args) 
    { 
     FocusApp.launch(args); 
    } 
} 

回答

1

我想你是问你想让焦点远离文本字段,当用户激活菜单。

您可以用

l_menu.setOnShowing(e -> l_menuBar.requestFocus()); 
+0

它可以做到这一点,谢谢! – WhiteAntelope

相关问题