java 按回车键登陆

hyt48079287 2008-08-23 03:12:55
一个登陆窗口在输入账号然后按TAB键切换到下面的密码栏,输入密码后。我想要的效果就是一按回车就相当于用鼠标点击按钮“登陆”,直接登陆。
但实际上还需要再按一次TAB,将那个“焦点”(我初学,是这样叫的吗)。移到"登陆"按钮上,这样按回车键才有效果。郁闷.......

在代码中有一段

jb3=new JButton("登录");
jb3.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent event){
if (event.getKeyText(event.getKeyCode()).compareToIgnoreCase("Enter")==0){

jb3.doClick();

}
}
});


请问怎末实现在输入密码后按回车键直接登陆呢?


下面是完整的代码,main函数就自己添加啦。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class JLogin extends JFrame{

JFrame jf = new JFrame();
Container cont =jf.getContentPane();
NewPanel np=new NewPanel();
private JTextField userid;
private JPasswordField password;
public JButton jb2,jb3;


void loginButton(){
userid=new JTextField();
userid.setBounds(110,80,170,25);
np.add(userid);
password =new JPasswordField();
password.setBounds(110,120,170,25);
password.setToolTipText("");
password.addNotify();
np.add(password);

// JButton jb2,jb3;
jb2=new JButton("取消");

jb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
JLogin jl = new JLogin();
System.exit(0);
}});
jb2.setBounds(210,180,80,30);
np.add(jb2);
jb3=new JButton("登录");
jb3.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent event)
{
if (event.getKeyText(event.getKeyCode()).compareToIgnoreCase("Enter")==0)
{
jb3.doClick();
}
}
});

jb3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae){


String str=password.getText();
String name = userid.getText();
if(str.equals("0")){
JOptionPane.showMessageDialog(null,"用户名或密码不能为空!","警告",JOptionPane.INFORMATION_MESSAGE);
}else{
new Attestaion(name,str);
jf.dispose();

}}

});

jb3.setBounds(80,180,80,30);
np.add(jb3);




}
void loginLabel(){
np.setLayout(null);
JLabel la1=new JLabel("账号");
la1.setFont(new Font("隶书",Font.PLAIN,19));
la1.setBounds(65,80,45,25);
np.add(la1);

JLabel la2=new JLabel("密码");
la2.setFont(new Font("隶书",Font.PLAIN,19));
la2.setBounds(65,120,45,25);
np.add(la2);
}


void loginFrame(){
jf.setTitle("欢迎使用固定资产管理系统 V1.0");
Toolkit kit = Toolkit.getDefaultToolkit();//获取Toolkit对象
Dimension screenSize = kit.getScreenSize();
int width = screenSize.width;
int height = screenSize.height;
int x = (width - 370) / 2;
int y = (height - 270) / 2;
jf.setBounds(x,y,370,270);
Image image = kit.getImage("2008_Olympic_Games_Logos.jpg");// 图像文件
jf.setIconImage(image);
jf.add(np);

jf.setVisible(true);
jf.setResizable(false);
}

void showJlogin(){
loginButton();
loginLabel();
loginFrame();
}

}
class NewPanel extends JPanel
{
public NewPanel(){}
public void paintComponent(Graphics g)
{

int x=0,y=0;
ImageIcon icon = new ImageIcon("1.jpg");
g.drawImage(icon.getImage(),x,y,this);
}
}
...全文
1472 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
pdsxiaocan 2009-06-17
  • 打赏
  • 举报
回复
12楼的最简单了.简单有效.
raulyao 2009-04-08
  • 打赏
  • 举报
回复
onkeydown="if(event.keyCode==13) 加上你的登陆的js就行,比如check()"
zhang603 2008-10-03
  • 打赏
  • 举报
回复
好的
学习
杨可雅思
SIOSXIAOQIANG 2008-08-27
  • 打赏
  • 举报
回复
路过
hyt48079287 2008-08-24
  • 打赏
  • 举报
回复
谢谢大家的帮忙~!

最后我在密码输入框password下面加了一个监听器用来监听ENTER键就OK了。



void loginButton(){
userid=new JTextField();
userid.setBounds(110,80,170,25);
np.add(userid);
password =new JPasswordField();
password.setBounds(110,120,170,25);
password.setToolTipText("");
password.addNotify();
np.add(password);


password.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent event)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)

{
jb3.doClick();
}
  • 打赏
  • 举报
回复
干嘛要这样啊?有方法的啊,昨天已经回复给你了,加上这一句就行了。

getRootPane().setDefaultButton(jb3);

这里按 Enter 键的默认触发就是 jb3 按钮,一个 RootPane 内只允许有一个 default button,
你会看到这个按钮会有一圈粗线条的外框。
aabb492547896 2008-08-24
  • 打赏
  • 举报
回复
usertext = new JTextField();
usertext.addKeyListener(new KeyAdapter() {
public void keyPressed(final KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
okbutton();//登陆事件
}
}
});
awusoft 2008-08-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 nfang 的回复:]
在文本框的KeyPerss事件中,KeyCode值为10是,就是按了回车。这时处理登录事件就OK了。
[/Quote]
馒头虫 2008-08-23
  • 打赏
  • 举报
回复
给你的密码框添加一个键盘监听
当在密码框按键时 判断是否为enter
如果是 执行一次你登陆按钮的内容
否则什么都不做
我在QQ群也给你回答了 如有不明白 Q我
我是群里的 馒头虫
nfang 2008-08-23
  • 打赏
  • 举报
回复
在文本框的KeyPerss事件中,KeyCode值为10是,就是按了回车。这时处理登录事件就OK了。
hyt48079287 2008-08-23
  • 打赏
  • 举报
回复
“ 你可以在这里面加一个事件处理 让焦点移到登陆的按钮上”

程序怎么判断用户输完密码?

又是什么触发它开始转移焦点?》
hyt48079287 2008-08-23
  • 打赏
  • 举报
回复
大哥就是不懂,怎么转移焦点到按钮上
justinavril 2008-08-23
  • 打赏
  • 举报
回复
一般在输入完密码之后会按Enter结束输入的 你可以在这里面加一个事件处理 让焦点移到登陆的按钮上
hyt48079287 2008-08-23
  • 打赏
  • 举报
回复
focus?

可以具体点吗?

例子给个
hyt48079287 2008-08-23
  • 打赏
  • 举报
回复
不是WED哦
lude8880 2008-08-23
  • 打赏
  • 举报
回复
focus
lude8880 2008-08-23
  • 打赏
  • 举报
回复
试试foucs

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧