⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatroomclient.java

📁 全是好玩的小程序全是好玩的小程序全是好玩的小程序
💻 JAVA
字号:
package day23;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ChatRoomClient implements ActionListener {

private JFrame jf;
private JTextArea jta;
private JLabel label;
private JButton button;
private JTextField field;
private Socket s=null;
private String name;
private PrintWriter pw;
private BufferedReader br;
public ChatRoomClient(){
	jf=new JFrame("聊天室客户端V1.0");
	do {
		String ip = JOptionPane.showInputDialog(jf, "请输入服务器IP:","127.0.0.1");
		String port = JOptionPane.showInputDialog(jf, "请输入服务器的端口号","8888");
		try {
			s = new Socket(ip, Integer.parseInt(port));
			pw=new PrintWriter(s.getOutputStream());
			br=new BufferedReader(new InputStreamReader(s.getInputStream()));
		} catch (IOException e) {
			JOptionPane.showMessageDialog(jf, "连接参数错误,请重新输入");
		}
	} while (s==null);
	name=JOptionPane.showInputDialog(jf,"请输入名称","姜维");
	jta=new JTextArea(30,40);
	label=new JLabel(name);
	button=new JButton("发送");
	field=new JTextField(25);
	init();
	addEvntHandler();
}
public void init(){
	JScrollPane jsp=new JScrollPane(jta);
	jf.add(jsp,BorderLayout.CENTER);
	JPanel panel=new JPanel();
	panel.add(label);
	panel.add(field);
	panel.add(button);
	jf.add(panel,BorderLayout.SOUTH);
	Font f=new Font("黑体", Font.BOLD,24);
	label.setFont(f);
 jta.setEditable(false);
}
public void actionPerformed(ActionEvent e) {
	pw.println(name+":"+field.getText());
	pw.flush();
	field.setText("");
}
private void addEvntHandler(){
	button.addActionListener(this);
	field.addActionListener(this);
	jf.addWindowListener(new WindowAdapter(){
		public void windowClosing(WindowEvent e){
		int op=	JOptionPane.showConfirmDialog(jf, "确定离开聊天室吗?","确定退出",JOptionPane.YES_NO_OPTION);
		if(op==JOptionPane.YES_OPTION){
			pw.println("%EXIT%:"+name);
			pw.flush();
			try {
				Thread.sleep(400);
				
			} catch (InterruptedException e1) {
				e1.printStackTrace();
			}finally{
				try{s.close();}catch(IOException e2){}
			}
			System.exit(0);
		}
		}
	});
}
public void showMe(){
	jf.pack();
	jf.setVisible(true);
	jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
	new ReadMessageThread().start();
}
class ReadMessageThread extends Thread{
	public void run(){
		while(true){
			try {
				String str=br.readLine();
				jta.append(str+"\n");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
public static void main(String[] args){
	new ChatRoomClient().showMe();
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -