实现功能(最终版):
1、基于上一版本,实现了swing图形界面,其中写的逻辑改变较大,要用到监听器监听发送按钮,而不是以前判断是否有键盘输入,另有背景颜色,字体及颜色,滚动条等设置。
2、该系统有强大的输入检查功能。
注:大家参考就好了,不要照搬啊!!!
结果展示
代码展示:
客户端:
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class TalkClient {
public static void main(String args[]) {
JFrame jf = new JFrame();//用JFrame创建一个名为frame的顶级容器
jf.setContentPane(new JPanel());//在jf里面添加一个JPanel对象,用来增加滚动条
jf.setTitle("JAVA聊天器");
jf.setResizable(true);//窗口可由用户调整大小
jf.setSize(540, 600);//大小
jf.setLocation(650, 100);//位置
jf.setLayout(null);//布局方式
JButton btnSend=new JButton("发送");//创建一个按钮
btnSend.setForeground(Color.red); //盖住背景色
final JTextArea xie=new JTextArea();//创建文本区域,写
final JTextArea du=new JTextArea();//读
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//右键关闭窗口时操作
jf.getContentPane().setBackground(Color.yellow);
jf.setVisible(true);//使图形可见
btnSend.setBounds(410,320,100,50);//位置,大小的设置
Font font = new Font("等线",Font.PLAIN, 20);//字体,20的字号
btnSend.setFont(font);
jf.add(btnSend);//添加到顶级容器
xie.setBounds(10,380,500,150);
xie.setFont(font);
jf.add(xie);
du.setEditable(false);//该控件不能被编辑,即显示区无法选择
//taChat.setBounds(10,10,500,300);
du.setFont(font);
//jf.add(taChat);
JScrollPane js = new JScrollPane(du);//把du封装到JScrollPane里面
js.setBounds(10,10,500,300);
jf.getContentPane().add(js);//添加到jf里,即添加滚动条
try{
//向本机的4700端口发出客户请求
@SuppressWarnings("resource")
final Socket socket=new Socket("127.0.0.1",4700);
DataInputStream is=new DataInputStream(socket.getInputStream());//消息,文件输入流
du.append("发消息:1 hello 发文件: 1 hello.txt 退出:1 bye"+"\n");
System.out.println("发消息:1 hello 发文件: 1 hello.txt 退出:1 bye"+"\n");