按下'标签'在Netbeans Swing GUI中

时间:2016-04-28 09:42:02

标签: java swing netbeans

所以我正在使用Netbeans 8.1构建一个登录框架。问题是,在用户输入用户名后,我希望他们能够按Tab键,然后选择密码textField,但不是这样,而是“登录”。按钮被选中。

启动时,会选择用户名字段。

Then when I press tab it looks like this

But instead I want it to look like this when I press tab

欢迎提供任何帮助,但如果我可以在不进入代码的情况下完成此操作并且可以使用Netbeans GUI(项目仅涉及设计GUI,而不是实际代码),我更愿意这样做。

3 个答案:

答案 0 :(得分:0)

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

NetBeans 8.0我相信您添加到设计窗口的第一个组件(即.textBox)应该是运行程序时游标默认的组件。在设计窗口中运行程序时,可以设置从组件到组件的Tab键顺序。选择第一个组件。在“属性”窗口中,转到nextFocusableComponent,然后在下拉列表中选择要选择的下一个组件。重复其余组件

我希望这可以帮到你!

答案 1 :(得分:0)

请看this answer

您可以实施自己的FocusTraversalPolicy来管理标签顺序。然后,您可以使用setFocusTraversalPolicy方法将其指定给您的框架。

您可以在Oracle的文档中找到some more explanations

答案 2 :(得分:-1)

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

请参阅:http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

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

.setFocusTraversalKeysEnabled(假)

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

您也可以按照以下方式

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();
        }
        }
});