来,继续啊,前面我们做过了GUI中的案例,也就是把一些小应用的界面做好了,但是具体功能并没有实现。接下来呢,我们就来一起实现一下。
首先,我们先来学习String类,它涉及到两个案例:用户登录和聊天室。
先来看用户登录案例:需要输入用户名和密码,和已知的用户名和密码进行比较,涉及到比较的方法,
一般来说,用户名和密码的长度可能会有一定限制,涉及到获取字符串长度的方法,
再来看聊天室案例,这里输入聊天的内容,然后把聊天内容显示到上面的文本域。
在聊天的时候,可能不小心打了空格,我们不需要的,需要去掉前后空格,
当然了,还有很多其他的成员方法,只不过,目前我们暂时用不上,后面用的时候再讲。
下面,我们就来学习一下字符串类String,最后完成用户登录案例和聊天室案例。
而关于String类呢,我们先到帮助文档中去查看,然后回来总结,最后到IDEA中去演示。
来,打开我们准备好的帮助文档,关于通过帮助文档查看String,大家按照老师讲解的API的使用步骤看看即可。
通过文档了解了String类之后,下面我们回到资料中总结一下:
String:
构造方法:
知道了String的构造方法后,我们到IDEA中去使用一下:
x/*
String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例
构造方法:
String():初始化新创建的 String对象,使其表示空字符序列
String(String original):初始化新创建的String对象,使其表示与参数相同的字符序列
*/
public class StringDemo01 {
public static void main(String[] args) {
//String():初始化新创建的 String对象,使其表示空字符序列
String s1 = new String();
System.out.println(s1);
//int length() 返回此字符串的长度
System.out.println(s1.length());
System.out.println("------------");
//String(String original):初始化新创建的String对象,使其表示与参数相同的字符序列
String s2 = new String("itheima");
System.out.println(s2);
System.out.println(s2.length());
System.out.println("------------");
//Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例
String s3 = "itheima";
System.out.println(s3);
System.out.println(s3.length());
}
}
讲解完毕后,大家赶快动手练习一下吧。
来,继续啊,下面我们来学习String类中常用的成员方法:
而关于这几个成员方法呢,我们到IDEA中一边使用,一边讲解。
xxxxxxxxxx
/*
int length():返回此字符串的长度
boolean equals(Object anObject):将此字符串与指定的对象进行比较
boolean equalsIgnoreCase(String anotherString):将此 String与另一个 String比较,忽略了大小写
String trim():返回一个字符串,其值为此字符串,删除了所有前导和尾随空格
*/
public class StringDemo02 {
public static void main(String[] args) {
String s1 = "itheima";
String s2 = "itheima";
String s3 = "Itheima";
//boolean equals(Object anObject):将此字符串与指定的对象进行比较
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
//boolean equalsIgnoreCase(String anotherString):将此 String与另一个 String比较,忽略了大小写
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println("-------------------");
String s4 = " itheima ";
//String trim():返回一个字符串,其值为此字符串,删除了所有前导和尾随空格
System.out.println(s4);
System.out.println(s4.trim());
String s5 = "it heima";
System.out.println(s5.trim());
}
}
讲解完毕后,大家赶快动手练习一下吧。
需求:根据下列要求,完成用户登录的逻辑,并给出相应的提示
要求:
① 已知的用户名和密码
xxxxxxxxxx
用户名:itheima
密码:123456
② 用户名和密码的长度都是6-12位
③ 点击登录按钮
xxxxxxxxxx
先判断输入的用户名和密码是否符合要求
再判断用户登录是否成功
知道了用户登录案例的需求和要求后,下面我们到IDEA中去实现一下:
xxxxxxxxxx
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/*
1:已知的用户名和密码
用户名:itheima
密码:123456
2:用户名和密码的长度都是6-12位
3:点击登录按钮
先判断输入的用户名和密码是否符合要求
再判断用户登录是否成功
*/
public class UserLogin {
public static void main(String[] args) {
//创建窗体对象
JFrame jf = new JFrame();
jf.setTitle("用户登录");
jf.setSize(400, 300);
jf.setDefaultCloseOperation(3);
jf.setLocationRelativeTo(null);
jf.setAlwaysOnTop(true);
jf.setLayout(null);
//显示用户名文本
JLabel usernameLable = new JLabel("用户名");
usernameLable.setBounds(50, 50, 50, 20);
jf.add(usernameLable);
//用户名输入框
JTextField usernameField = new JTextField();
usernameField.setBounds(150, 50, 180, 20);
jf.add(usernameField);
//显示密码文本
JLabel passwordLable = new JLabel("密码");
passwordLable.setBounds(50, 100, 50, 20);
jf.add(passwordLable);
//密码输入框
JPasswordField passwordField = new JPasswordField();
passwordField.setBounds(150, 100, 180, 20);
jf.add(passwordField);
//登录按钮
JButton loginButton = new JButton("登录");
loginButton.setBounds(50, 200, 280, 20);
jf.add(loginButton);
//已知的用户名和密码
String name = "itheima";
String pwd = "123456";
loginButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//获取用户输入的用户名和密码
String username = usernameField.getText();
String password = passwordField.getText();
//先判断输入的用户名和密码是否符合要求
//用户名和密码的长度都是6-12位
if(username.length()<6 || username.length()>12) {
// System.out.println("用户名的长度是6-12位,请重新输入");
//静态的成员方法和成员变量是可以通过类名访问的
JOptionPane.showMessageDialog(jf,"用户名的长度是6-12位,请重新输入");
usernameField.setText("");
return;
}
//再判断用户登录是否成功
if(username.equals(name) && password.equals(pwd)) {
// System.out.println("登录成功");
JOptionPane.showMessageDialog(jf,"登录成功");
usernameField.setText("");
passwordField.setText("");
} else {
// System.out.println("用户名或者密码有误");
JOptionPane.showMessageDialog(jf,"用户名或者密码有误");
}
}
});
jf.setVisible(true);
}
}
讲解完毕后,大家赶快动手练习一下吧。
需求:根据下列要求,完成聊天室的逻辑
要求:
① 把文本框的内容发送到文本域中
② 每次发送的文本内容不带前后空格
③ 多次发送的内容在文本域以追加的方式呈现
④ 清空聊天就是把文本域的内容设置为空
知道了聊天室案例的需求和要求后,下面我们到IDEA中去实现一下:
xxxxxxxxxx
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/*
1:把文本框的内容发送到文本域中
2:每次发送的文本内容不带前后空格
3:多次发送的内容在文本域以追加的方式呈现
4:清空聊天就是把文本域的内容设置为空
*/
public class ChatRoom {
public static void main(String[] args) {
//创建窗体对象
JFrame jf = new JFrame();
jf.setTitle("聊天室");
jf.setSize(400, 300);
jf.setDefaultCloseOperation(3);
jf.setLocationRelativeTo(null);
jf.setAlwaysOnTop(true);
jf.setLayout(null);
//显示聊天信息的文本域
JTextArea messageArea = new JTextArea();
messageArea.setBounds(10, 10, 360, 200);
jf.add(messageArea);
//输入聊天信息的文本框
JTextField messageField = new JTextField();
messageField.setBounds(10, 230, 180, 20);
jf.add(messageField);
//发送按钮
JButton sendButton = new JButton("发送");
sendButton.setBounds(200, 230, 70, 20);
jf.add(sendButton);
//清空聊天按钮
JButton clearButton = new JButton("清空聊天");
clearButton.setBounds(280, 230, 100, 20);
jf.add(clearButton);
sendButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//获取文本框的内容
// String message = messageField.getText();
// messageField.setText("");
//每次发送的文本内容不带前后空格
// String message = messageField.getText();
// message = message.trim();
String message = messageField.getText().trim(); //链式调用
messageField.setText("");
//把文本框的内容发送到文本域中
// messageArea.setText(message);
//多次发送的内容在文本域以追加的方式呈现
messageArea.append(message+"\n");
}
});
clearButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//清空聊天就是把文本域的内容设置为空
messageArea.setText("");
}
});
jf.setVisible(true);
}
}
讲解完毕后,大家赶快动手练习一下吧。