对于不久之前学习到的一个有关的类似于QQ聊天框的模拟项目,对其中涉及到的知识在这里做一下总结。
- 首先,你要先创建一个客户端聊天框(取名为:ChatClient,它是你创建的类),这个类继承了Frame。而这个Frame是java.awt里的一个子类,它是带有标题和边框的顶层窗口,它里面有很多方法(具体查手册)。下面是一段示例代码:
import java.awt.*; public class ChatClient extends Frame{//你创建的类继承了Frame public static void main(String[] args) {
new ChatClient().launchFrame();//通过new实例化创建一个对象
} public void launchFrame(){//设置聊天框的大小参数
setLocation(400,300);
setSize(300,300);
setVisible(true);//设置为可见
}
}
这是运行之后出现的一个雏形聊天框:
2. 第二步,调整聊天框的大小,并且往框架中添加控件。下面是代码:
import java.awt.*; public class ChatClient extends Frame{
//实例化创建对象
TextField tfTxt = new TextField();
TextArea taContent = new TextArea(); public static void main(String[] args) {
new ChatClient().launchFrame();
} public void launchFrame(){
setLocation(400,300);
setSize(300,300);
//往框架中添加控件,Frame默认的布局是BorderLayout
add(tfTxt,BorderLayout.SOUTH);
add(taContent,BorderLayout.NORTH);
this.pack(); setVisible(true);
}
}
这是运行之后的效果:
3.添加事件感应,可以往文本框中输入文字
import java.awt.*;
import java.awt.event.*; public class ChatClient extends Frame { // 添加文本域事件感应,三种方法:外部并行类,内部类,局部匿名类
TextField tfTxt = new TextField();
TextArea taContent = new TextArea(); public static void main(String[] args) {
new ChatClient().launchFrame();//通过new实例化创建一个对象
} public void launchFrame() {
setLocation(400, 300);
setSize(300, 300);
// 往框架中添加控件
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
this.pack();//打包
//给当前对象添加一个窗口监听事件
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
tfTxt.addActionListener(new TfListener());//给文本域添加一个事件监听
setVisible(true);
} private class TfListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String s = tfTxt.getText().trim(); }
}
}
运行之后的效果:
4.添加客户端,通过socket链接客户端和服务器。
import java.io.IOException;
import java.net.*; public class ChatServer {
//添加服务端
public static void main(String[] args) {
try(
ServerSocket ss = new ServerSocket(8888);//通过socket链接客户端和服务器端
){
while (true){
Socket s = ss.accept();
System.out.println( "a client connected!!" );
}
}catch(Exception e){
e.printStackTrace();
}
} }
5.第五步,链接服务器。
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.*; public class ChatClient extends Frame { // 添加文本域事件感应,三种方法:外部并行类,内部类,局部匿名类 TextField tfTxt = new TextField();
TextArea taContent = new TextArea(); public static void main(String[] args) {
new ChatClient().launchFrame();
} public void launchFrame() {
setLocation(400, 300);
setSize(300, 300);
// 往框架中添加控件
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
this.pack();
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
tfTxt.addActionListener(new TfListener());
setVisible(true);
connect();
} //链接服务器方法
public void connect(){
try(
Socket s = new Socket("127.0.0.1", 8888);//端口号必须一致
){
System.out.println( "Connected sucsess" );
}catch(IOException e){
e.printStackTrace();
}
} private class TfListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String s = tfTxt.getText().trim(); }
}
}
先写到这里,有什么不对的地方,请大神敬请指教!