首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • java 按回车键登陆 [已结贴,结贴人:hyt48079287]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyt48079287
    • 等级:
    发表于:2008-08-23 15: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);
      } 
    }
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-23 15:16:571楼 得分:0
    试试foucs
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyt48079287
    • 等级:
    发表于:2008-08-23 15:17:112楼 得分:0
    不是WED哦
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-23 15:17:113楼 得分:0
    focus
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyt48079287
    • 等级:
    发表于:2008-08-23 15:17:404楼 得分:0
    focus?

    可以具体点吗?

    例子给个
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-23 15:19:055楼 得分:0
    一般在输入完密码之后会按Enter结束输入的  你可以在这里面加一个事件处理 让焦点移到登陆的按钮上
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyt48079287
    • 等级:
    发表于:2008-08-23 15:21:106楼 得分:0
    大哥就是不懂,怎么转移焦点到按钮上
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyt48079287
    • 等级:
    发表于:2008-08-23 15:23:517楼 得分:0
    “ 你可以在这里面加一个事件处理 让焦点移到登陆的按钮上”

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

    又是什么触发它开始转移焦点?》
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-23 15:41:528楼 得分:5
    在文本框的KeyPerss事件中,KeyCode值为10是,就是按了回车。这时处理登录事件就OK了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hanxiao345
    • 等级:
    发表于:2008-08-23 19:05:509楼 得分:5
    给你的密码框添加一个键盘监听
    当在密码框按键时 判断是否为enter
    如果是 执行一次你登陆按钮的内容
    否则什么都不做
    我在QQ群也给你回答了  如有不明白  Q我
    我是群里的 馒头虫
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • AWUSOFT
    • 等级:
    发表于:2008-08-23 19:08:4710楼 得分:0
    引用 8 楼 nfang 的回复:
    在文本框的KeyPerss事件中,KeyCode值为10是,就是按了回车。这时处理登录事件就OK了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-24 10:04:5311楼 得分:5
    usertext = new JTextField();
    usertext.addKeyListener(new KeyAdapter() {
    public void keyPressed(final KeyEvent e)
    {
      if(e.getKeyCode()==KeyEvent.VK_ENTER)
      {
          okbutton();//登陆事件
      }
    }
    });
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-24 11:22:4412楼 得分:5
    干嘛要这样啊?有方法的啊,昨天已经回复给你了,加上这一句就行了。

    getRootPane().setDefaultButton(jb3);

    这里按 Enter 键的默认触发就是 jb3 按钮,一个 RootPane 内只允许有一个 default button,
    你会看到这个按钮会有一圈粗线条的外框。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyt48079287
    • 等级:
    发表于:2008-08-24 12:46:1213楼 得分:0
    谢谢大家的帮忙~!

    最后我在密码输入框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();
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-27 03:55:2814楼 得分:0
    路过
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhang603
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-03 13:45:5715楼 得分:0
    好的
    学习
    杨可雅思
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved