有几个键盘有Alt Gr key。在我的瑞典语键盘布局上,要输入[
字符,我必须按 Alt Gr + 8 (或 Ctrl + Alt + 8 )。
如果我要在JavaFX TextField
中输入此字符两次,其中应用程序也有MenuBar
,则菜单栏会保留焦点而不是文本字段。这使得我必须再次按 Alt 或 Alt Gr 以使TextField
获得焦点。在使用 Alt Gr 键输入任何字符后,我希望TextField
具有焦点。
重现问题的代码:
public class MenuTest extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Pane pane = new VBox();
MenuBar menuBar = new MenuBar();
menuBar.getMenus().add(new Menu("_File"));
menuBar.getMenus().add(new Menu("_Test"));
TextField input = new TextField();
pane.getChildren().add(menuBar);
pane.getChildren().add(input);
Scene scene = new Scene(pane);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
重现的步骤:
TextField
有焦点的地方:
预期行为:[
中插入了两个TextField
个字符。插入符号在TextField
中向左移动了一步。
实际行为:[
中插入了两个TextField
个字符。另一个菜单突出显示并具有焦点
问题:
为什么会这样?甚至Windows的基本记事本应用程序也符合我的期望。
有什么方法可以让实际行为符合预期的行为?