来,继续啊,前面我们做过了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中去实现一下:
xxxxxxxxxximport 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中去实现一下:
xxxxxxxxxximport 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); }}讲解完毕后,大家赶快动手练习一下吧。