Java练习之equals()和"=="的区别

时间:2021-12-04 16:21:14

练习题目:

尝试开发一个登陆窗体,包括用户名、密码以及提交按钮和重置按钮,当用户输入用户名mr、密码输入mrsoft时,弹出登陆成功提示对话框。

知识点:

  1. Swing程序设计
  2. JFrame窗体:窗体是一个容器,是Swing程序中各个组件的载体,JFrame对象创建完成之后,需要调用getContentPane()方法将窗体转换为容器
  3. 标签的使用
  4. 布局管理器FlowLayout、BorderLayout、GridLayout三者之间的布局差别
  5. JPanel面板
  6. JButton提交按钮
  7. JTextField和JPasswordField
  8. 事件监听器:负责处理用户单击按钮后实现的功能


遇到的问题
在最后运行的时候,无论用户名和密码输入是否合乎要求,都会弹出用户名和密码错误的提示框

原因:在监听事件里面的if条件出错

关键:equals()和==这两种比较方式有着本质的区别,equals()方法是String类中的方法,用于比较两个对象引用所指的内容是否相等,而==运算符比较的是两个对象引用的地址是否相等。

源代码:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;


public class Login {
public void CreateJFrame(String title){
JFrame jf=new JFrame(title);//frame框架
Container container=jf.getContentPane();//获得容器
container.setLayout(new FlowLayout());
JPanel jp1=new JPanel(new FlowLayout());//面板1
JPanel jp2=new JPanel(new FlowLayout());//面板2
JPanel jp3=new JPanel(new FlowLayout());//面板3

JLabel jl1=new JLabel("登录名:");//登录名标签
JLabel jl2=new JLabel("密码:");//密码标签
JTextField jt1=new JTextField(20);//登录名输入框
JTextField jt2=new JPasswordField(20);//密码输入框
((JPasswordField) jt2).setEchoChar('*');
JButton jb1=new JButton("提交");//提交按钮
JButton jb2=new JButton("重置");//重置按钮
jb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(jt1.getText().equals("mr" )&& jt2.getText().equals("mrsoft")){
JOptionPane.showMessageDialog(null, "登陆成功");
}
else{
JOptionPane.showMessageDialog(null, "用户名或密码错误");
}
}
});
jb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){
jt1.setText("");
jt1.requestFocus();
jt2.setText("");
jt2.requestFocus();
}
});

jp1.add(jl1);
jp1.add(jt1);
jp2.add(jl2);
jp2.add(jt2);
jp3.add(jb1);
jp3.add(jb2);
container.add(jp1);
container.add(jp2);
container.add(jp3);

container.setBackground(Color.white);
jf.setVisible(true);
jf.setSize(200, 150);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String [] args){
new Login().CreateJFrame("登陆窗口");
}
}

总结:

1.当一个窗体里有多个组件时,可以选择把窗体分成多个面板,把组件放在面板中,这样就会更加清晰

2.要区分三种布局方式,使界面更加美观

3.设计完之后,不能忘了使窗体可视化并设置其大小

4.监听事件的使用