2012-03-19 206 views
0

我注意到MenuBar控件上的setFocusTraversable()存在問題。如果我在menuBar對象上調用setFocusTraversable(false),則當我按下TextField中的Tab,但事件(changed())未被觸發時,焦點將遍歷(我可以看到菜單欄被突出顯示/選中)。如果我在menuBar對象上調用setFocusTraversable(true),並在TextField中按下Tab,則焦點不會直觀地遍歷到MenuBar(TextField失去焦點),但事件被觸發,並且焦點不能使用Tab或Shift + Tab在TextField上設置。我不確定這是否是我的理解中的錯誤或問題。JavaFX 2.0中的MenuBar上的setFocusTraversable行爲

這是代碼。

public class MenuTest extends Application 
implements ChangeListener 
{ 
    MenuBar menuBar = new MenuBar(); 
    TextField tf1 = new TextField("One"); 
    public static void main(String[] args) 
    { 
    Application.launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) 
    { 
     Group content = new Group(); 
     BorderPane paneLayout = new BorderPane(); 
     final Menu menu1 = new Menu("File"); 

     menuBar.getMenus().addAll(menu1); 
     Menu exit = new Menu("Exit"); 
     menu1.getItems().add(exit); 
     content.getChildren().add(tf1); 
     paneLayout.setTop(menuBar); 
     paneLayout.setCenter(content); 
     Scene scene = new Scene(paneLayout, 300, 250); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

     menuBar.setFocusTraversable(false); 
     menuBar.focusedProperty().addListener(this); 
     tf1.focusedProperty().addListener(this); 
     tf1.requestFocus(); 
    } 

    public void changed(ObservableValue ov, Object t, Object t1) 
    { 
    System.out.println("focus gained - " + ov.toString()); 
    } 
} 

請幫忙。

感謝, KK

PS:菜單欄API明確地說, 「菜單欄設置focusTraversable假。」但行爲不同。

+0

你能不能請,加哪個版本的JavaFX你使用信息? 2.0? – 2012-03-22 09:12:22

+0

@SergeyGrinev:我正在使用JavaFX 2.0和JDK 1.6.0_27 – krish 2012-03-26 07:04:06

回答