今天学习了一下简单聊天程序(类似QQ那种)的编写过程,从最初的0.1版本到最后的1.3版本,功能不断地增强,下面对一天的学习内容进行梳理。

版本0.1

我们的需求是显示一个窗体,其他什么也不用做,其他功能逐步添加,我们这里用的就是AWT中的Frame;

具体代码实现:

 1 import java.awt.*;
 2 
 3 public class ChatClient extends Frame{
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         new ChatClient().launchFrame();
10     }
11 
12     /**
13      * Version 0.1
14      */
15     public void launchFrame(){
16         //设置Frame位置
17         setLocation(400, 300);
18         //设置Frame大小
19         this.setSize(300, 300);
20         //窗口可见
21         setVisible(true);
22     }
23 }

版本0.2

我们的需求是在我们的Frame中添加两个部件TextField(用于输入)和TextArea(用于显示获取的内容),此时我们可以在输入框输入内容,但是显示框无法显示我们输入的内容.

 1 import java.awt.*;
 2 
 3 public class ChatClient extends Frame {
 4 
 5     TextField tfTxt = new TextField();
 6     TextArea taContent = new TextArea();
 7 
 8     public static void main(String[] args) {
 9         new ChatClient().launchFrame();
10     }
11 
12     /**
13      * Version 0.2
14      */
15     public void launchFrame() {
16         // 设置Frame位置
17         setLocation(400, 300);
18         // 设置Frame大小
19         this.setSize(300, 300);
20         // 将输入框TextField加到Frame中,并放置到Frame布局的上面
21         add(tfTxt, BorderLayout.SOUTH);
22         // 将显示框TextArea加到Frame中,并放置到Frame布局的下面
23         add(taContent, BorderLayout.NORTH);
24         // 调整布局,处理多余空白框
25         pack();
26         // 窗口可见
27         setVisible(true);
28     }
29 }

版本0.3

因为我们的版本0.2中,显示的窗体无法关闭(除非把程序停掉,我们这里不考虑这种做法),我们添加窗口监听,使我们可以通过点击窗体的(X)符号进行关闭;

 1 import java.awt.*;
 2 import java.awt.event.*;
 3 
 4 public class ChatClient extends Frame {
 5 
 6     TextField tfTxt = new TextField();
 7     TextArea taContent = new TextArea();
 8 
 9     public static void main(String[] args) {
10         new ChatClient().launchFrame();
11     }
12 
13     /**
14      * Version 0.3:添加窗口关闭的功能
15      */
16     public void launchFrame() {
17         // 设置Frame位置
18         setLocation(400, 300);
19         // 设置Frame大小
20         this.setSize(300, 300);
21         // 将输入框TextField加到Frame中,并放置到Frame布局的上面
22         add(tfTxt, BorderLayout.SOUTH);
23         // 将显示框TextArea加到Frame中,并放置到Frame布局的下面
24         add(taContent, BorderLayout.NORTH);
25         // 调整布局,处理多余空白框
26         pack();
27         //添加窗口监听
28         this.addWindowListener(new WindowAdapter() {
29 
30             @Override
31             public void windowClosing(WindowEvent e) {
32                 System.exit(0);
33             }        
34         });
35         
36         // 窗口可见
37         setVisible(true);
38     }
39 }

版本0.4

我们实现的功能是将输入框输入的内容显示到显示框TextArea中,

 1 import java.awt.*;
 2 import java.awt.event.*;
 3 
 4 public class ChatClient extends Frame {
 5 
 6     TextField tfTxt = new TextField();
 7     TextArea taContent = new TextArea();
 8 
 9     public static void main(String[] args) {
10         new ChatClient().launchFrame();
11     }
12 
13     /**
14      * Version 0.4
15      */
16     public void launchFrame() {
17         // 设置Frame位置
18         setLocation(400, 300);
19         // 设置Frame大小
20         this.setSize(300, 300);
21         // 将输入框TextField加到Frame中,并放置到Frame布局的上面
22         add(tfTxt, BorderLayout.SOUTH);
23         // 将显示框TextArea加到Frame中,并放置到Frame布局的下面
24         add(taContent, BorderLayout.NORTH);
25         // 调整布局,处理多余空白框
26         pack();
27         // 添加窗口监听
28         this.addWindowListener(new WindowAdapter() {
29 
30             @Override
31             public void windowClosing(WindowEvent e) {
32                 System.exit(0);
33             }
34         });
35 
36         // 将监听器类TFListener添加到输入框TextField中
37         tfTxt.addActionListener(new TFListener());
38         // 窗口可见
39         setVisible(true);
40     }
41 
42     // 建立私有的监听器类,TextField监听:将TextField内容放置到TextArea
43     private class TFListener implements ActionListener {
44 
45         @Override
46         public void actionPerformed(ActionEvent e) {
47             //获得输入框的内容,并去除两端的空格
48             String s = tfTxt.getText().trim();
49             //将获取的输入内容放置到TextArea中
50             taContent.setText(s);
51             //每次输入结束,将输入框置空
52             tfTxt.setText("");
53         }
54     }
55 }

版本0.5

相比版本0.4,我们添加了Server端,使得Server作为中转站,把我们输入的内容显示在其他连接到Server端的客户端的的显示框中;

ChatClient

 1 import java.awt.*;
 2 import java.awt.event.*;
 3 
 4 public class ChatClient extends Frame {
 5 
 6     TextField tfTxt = new TextField();
 7     TextArea taContent = new TextArea();
 8 
 9     public static void main(String[] args) {
10         new ChatClient().launchFrame();
11     }
12 
13     /**
14      * Version 0.5:处理输入框
15      */
16     public void launchFrame() {
17         // 设置Frame位置
18         setLocation(400, 300);
19         // 设置Frame大小
20         this.setSize(300, 300);
21         // 将输入框TextField加到Frame中,并放置到Frame布局的上面
22         add(tfTxt, BorderLayout.SOUTH);
23         // 将显示框TextArea加到Frame中,并放置到Frame布局的下面
24         add(taContent, BorderLayout.NORTH);
25         // 调整布局,处理多余空白框
26         pack();
27         // 添加窗口监听
28         this.addWindowListener(new WindowAdapter() {
29 
30             @Override
31             public void windowClosing(WindowEvent e) {
32                 System.exit(0);
33             }
34         });
35 
36         // 将监听器类TFListener添加到输入框TextField中
37         tfTxt.addActionListener(new TFListener());
38         // 窗口可见
39         setVisible(true);
40     }
41 
42     // 建立私有的监听器类,TextField监听:将TextField内容放置到TextArea
43     private class TFListener implements ActionListener {
44 
45         @Override
46         public void actionPerformed(ActionEvent e) {
47             // 获得输入框的内容,并去除两端的空格
48             String s = tfTxt.getText().trim();
49             // 将获取的输入内容放置到TextArea中
50             taContent.setText(s);
51             // 每次输入结束,将输入框置空
52             tfTxt.setText("");
53         }
54     }
55 }
View Code

相关文章:

  • 2021-05-31
  • 2021-06-20
  • 2021-09-29
  • 2021-04-08
  • 2022-01-20
  • 2021-09-20
  • 2022-01-15
猜你喜欢
  • 2021-05-23
  • 2021-05-19
  • 2022-02-12
相关资源
相似解决方案