所以我正在使用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,而不是实际代码),我更愿意这样做。
答案 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();
}
}
});