Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自定义在Netbeans Swing GUI中按“tab”时发生的情况_Java_Swing_Netbeans - Fatal编程技术网

Java 自定义在Netbeans Swing GUI中按“tab”时发生的情况

Java 自定义在Netbeans Swing GUI中按“tab”时发生的情况,java,swing,netbeans,Java,Swing,Netbeans,因此,我正在使用Netbeans 8.1构建一个登录框架。问题是,在用户输入用户名后,我希望他们能够按tab键,然后选择password文本字段,但不是这样,而是选择了“Login”(登录)按钮 启动时,选择用户名字段 欢迎提供任何帮助,但如果我可以在不涉及代码的情况下完成这项工作,并且可以使用Netbeans GUI,那么我更愿意这样做。该项目只是设计GUI,而与实际代码无关。您需要订购组件索引,它调用tab index NetBeans 8.0我认为您添加到设计窗口的第一个组件即文本框应该是

因此,我正在使用Netbeans 8.1构建一个登录框架。问题是,在用户输入用户名后,我希望他们能够按tab键,然后选择password文本字段,但不是这样,而是选择了“Login”(登录)按钮

启动时,选择用户名字段


欢迎提供任何帮助,但如果我可以在不涉及代码的情况下完成这项工作,并且可以使用Netbeans GUI,那么我更愿意这样做。该项目只是设计GUI,而与实际代码无关。

您需要订购组件索引,它调用tab index

NetBeans 8.0我认为您添加到设计窗口的第一个组件即文本框应该是运行程序时光标默认的组件。在设计窗口中运行程序时,可以设置从一个组件切换到另一个组件的顺序。选择第一个组件。在“属性”窗口中,转到nextFocusableComponent,并在下拉列表中选择下一个要制表的组件。对其余部件重复上述步骤

我希望这对你有帮助

看看

您可以实现自己的,它将管理选项卡顺序。然后可以使用setFocusTraversalPolicy方法将其指定给帧


您可以在Oracle的文档中找到。

按键事件侦听器未接收到任何按下Tab键或释放按键的事件。这是因为焦点子系统使用焦点遍历键,例如Tab和Shift-Tab

见:

要解决此问题,请对触发关键事件的组件应用以下内容,例如TextArea:

.setFocusTraversalKeysEnabledfalse

使用此方法,您必须显式地处理焦点遍历。或者,KeyEventDispatcher类可用于预侦听所有关键事件

你也可以按照下面的方法做


KeyListener通常是一个糟糕的选择,Swing有一个记录良好的焦点管理API,[Enter]并不总是规定的传输键,那么这是最好的方式,请看一看开头,谢谢,这正是我想要的,而且很容易做到。
txtUserName.addKeyListener(new KeyAdapter()
    {
        public void keyReleased(KeyEvent arg)
        {
        if (arg.getKeyCode() == KeyEvent.VK_ENTER)
        {
            txtPassword.requestFocus();
        }
        }
    });
    txtPassword.addKeyListener(new KeyAdapter()
    {
        public void keyReleased(KeyEvent arg)
        {
        if (arg.getKeyCode() == KeyEvent.VK_ENTER)
        {
            btnLogin.doClick();
        }
        }
});