我还以为你从来都不会选我 2019-06-21 02:45 采纳率: 75%
浏览 363
已采纳

java 窗口登陆程序 麻烦帮我完善下几个很简单问题 本人刚开始学Java?

代码如下:
问题我备注
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class My extends JFrame implements ActionListener{
JLabel a4,a5,a6,a8;
JTextField a3;
JButton a1,a2;
JPasswordField a7;

My(){
a5=new JLabel("用户名");
a3=new JTextField(6);
a3.addActionListener(this);
a6=new JLabel("密码");
a7=new JPasswordField(6);
a7.addActionListener(this);
a1=new JButton("登录");
a1.addActionListener(this);
a2=new JButton("取消");
a2.addActionListener(this);
a8=new JLabel("欢迎进入信息录入系统");
a4=new JLabel(new ImageIcon("a.jpg"));
a8.setFont(new Font("楷体",Font.BOLD,28));
this.setLayout(new FlowLayout());
this.add(a8);this.add(a4);
this.add(a5);this.add(a3);
this.add(a6);this.add(a7);
this.add(a1);this.add(a2);
add(a8,BorderLayout.SOUTH);
add(a4,BorderLayout.CENTER);
add(a5,BorderLayout.NORTH);add(a3,BorderLayout.NORTH);
add(a6,BorderLayout.NORTH);add(a7,BorderLayout.NORTH);
add(a1,BorderLayout.NORTH);add(a2,BorderLayout.NORTH);
this.setVisible(true);
this.setSize(400,340);
this.setLocationRelativeTo(null);
this.setTitle("登陆界面");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getRootPane().setDefaultButton(a1);
}
private void registerKeyListener(){
a7.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent event){
if (KeyEvent.getKeyText(event.getKeyCode()).compareToIgnoreCase("Enter")==0){
a1.doClick();
}
}
});//我想键盘按回车实现登陆不用点击登陆按钮
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==a1) {
String s=a3.getText();
if(s.trim().equals("")) {
JOptionPane.showMessageDialog(null, "输入内容不能为空","不合法提示",JOptionPane.INFORMATION_MESSAGE);
}//内容为空的时候他会有俩个弹窗麻烦让他内容为空的时候只弹出一个
}
if(ae.getSource()==a2){

}
if(ae.getSource()==a1) { 
    String q=a3.getText();
    String w= String.valueOf(a7.getPassword());
    if((q.equals("123")) && (w.equals("123"))) {
        JOptionPane.showMessageDialog(null, "登陆成功","确认登陆",JOptionPane.INFORMATION_MESSAGE);
        this.dispose();
        new My1();
    }
    else {
        JOptionPane.showMessageDialog(null, "用户名或密码错误","不合法提示",JOptionPane.INFORMATION_MESSAGE);
    }
    }   

}
}
public class Test1 {
public static void main(String[] args) {
new My();
}
}

  • 写回答

1条回答 默认 最新

  • 代码的灵魂是bug! 2019-06-21 11:03
    关注

    针对你的问题,我一点点说,首先,如果你想实现回车键登录,那就必须监听到回车键事件,因此,你需要实现按键监听的接口,也就是KeyListener,当你实现KeyListener接口之后,会重写三个方法,分别是:keyPressed、keyReleased、keyTyped,其中keyPressed就是响应回车键事件代码的地方,下面我贴上改过的代码
    先实现监听

    public class My extends JFrame implements ActionListener,KeyListener{
    

    然后写监听的代码

    @Override
        public void keyPressed(KeyEvent e) {
            if(e.getSource()==a7 ||e.getSource() == a3){
                if(e.getKeyCode()==KeyEvent.VK_ENTER){
                    String s=a3.getText();
                    String w= String.valueOf(a7.getPassword());
                    if(s.trim().equals("")) {
                        JOptionPane.showMessageDialog(null, "输入内容不能为空","不合法提示",JOptionPane.INFORMATION_MESSAGE); 
                        return;//这里加return就会规避调下面的提示
                    }
                    if((s.equals("123")) && (w.equals("123"))) {
                        JOptionPane.showMessageDialog(null, "登陆成功","确认登陆",JOptionPane.INFORMATION_MESSAGE);
                        this.dispose();
                        new My();
                    }
                    else {
                        JOptionPane.showMessageDialog(null, "用户名或密码错误","不合法提示",JOptionPane.INFORMATION_MESSAGE);
                        return;//这里是同样的道理
                    }
                }
            }
    
        }
    

    上面就是响应回车键事件的全部代码,里面包括了你的第二个问题,想要针对错误提示只弹一次框,只需要在提示之后return就行了
    最后,你需要给你的两个输入框添加事件监听

    a3.addKeyListener(this);
    a7.addKeyListener(this);
    

    如果帮到你,请采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题