2015-11-12 63 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

相關問題