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

📄 frame1.java

📁 用JAVA编译一个聊天程序,由主程序
💻 JAVA
字号:
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Frame1 extends JFrame implements Runnable{ 
	Thread thread; 
	JPanel contentPane; 
	Frame2 frame=new Frame2(); 
	JScrollPane jScrollPane1 = new JScrollPane(); 
	JScrollPane jScrollPane2 = new JScrollPane(); 
	JButton jButton1 = new JButton(); 
	JButton jButton2 = new JButton(); 
	JTextArea jTextArea1 = new JTextArea(); 
	JTextArea jTextArea2 = new JTextArea(); 
	JScrollPane jScrollPane3 = new JScrollPane(); 
	JList jList1 = new JList(); 
	Socket socket; 
	int port =10000; 
	DataInputStream in; 
	DataOutputStream out; 
	Vector vector=new Vector(); 
	String wenBen; 
	String str; 
	String xinxi; 
	public Frame1() { 
	try { 
	setDefaultCloseOperation(EXIT_ON_CLOSE); 
	addWindowListener 
	( 
	new WindowAdapter() { 
	public void windowClosing(WindowEvent e) { 
	try{ 
	out.writeUTF("下线了:"+frame.name+" /  "+frame.sex); 

	out.close() ; 

	in.close() ; 
	socket.close(); 

	} 
	catch(Exception ee){ 

	} 
	finally{ 
	frame.dispose() ; 
	dispose(); 
	} 
	} 
	} 
	); 
	jbInit(); 
	} catch (Exception exception) { 
	exception.printStackTrace(); 
	} 

	} 

	/** 
	* Component initialization. 
	* 
	* @throws java.lang.Exception 
	*/ 
	private void jbInit() throws Exception { 
	contentPane = (JPanel) getContentPane(); 
	contentPane.setLayout(null); 
	setTitle("登陆聊天室"); 
	this.setResizable(false); 
	setSize(new Dimension(602, 515)); 
	frame.setVisible(true); 
	jScrollPane1.setBounds(new Rectangle(2, 2, 445, 320)); 
	jScrollPane2.setBounds(new Rectangle(1, 333, 448, 95)); 
	jButton1.setBounds(new Rectangle(93, 441, 78, 31)); 
	jButton1.setText("发送"); 
	jButton2.setBounds(new Rectangle(185, 441, 76, 31)); 
	jButton2.setText("清空"); 
	jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this)); 
	jTextArea1.setEditable(false); 
	jScrollPane3.setBounds(new Rectangle(458, 6, 139, 424)); 
	jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this)); 
	jTextArea2.addKeyListener(new Frame1_jTextArea2_keyAdapter(this)); 
	contentPane.add(jScrollPane2); 
	jScrollPane2.getViewport().add(jTextArea2); 
	contentPane.add(jScrollPane1, null); 
	jScrollPane1.getViewport().add(jTextArea1); 
	contentPane.add(jScrollPane3); 
	contentPane.add(jButton1); 
	contentPane.add(jButton2); 
	jScrollPane3.getViewport().add(jList1); 
	this.setVisible(false); 
	try { 
	socket = new Socket("127.0.0.1", port); 
	in = new DataInputStream(socket.getInputStream()); 

	out = new DataOutputStream(socket.getOutputStream()); 
	} catch (Exception e) { 
	setVisible(true); 
	jTextArea2.setText("无法与服务器联接,请退出...") ; 
	} 
	if (thread == null) { 
	thread = new Thread(this); 
	thread.start(); 

	} 
	frame.setClection(socket, in, out); 

	} 
	public boolean setClection1() { 
	frame.setClection(socket, in, out); 
	return frame.bool; 
	} 
	public void setClection2() { 
	wenBen = jTextArea2.getText(); 
	if (wenBen.equals("")) { 
	jTextArea2.setText("请输入信息(不能为空):"); 
	return; 
	} 

	try { 
	out.writeUTF(frame.name + " 说 : " + wenBen); 
	jTextArea2.setText("") ; 
	} catch (Exception ee) { 

	} 
	} 
	public void run() { 
	String sl = null; 
	String ss = null; 
	String s = null; 

	while (true) { 

	try { 

	sl = in.readUTF(); 
	} catch (Exception ee) { 
	vector.removeAllElements(); 
	jList1.setListData(vector); 
	jTextArea2.setText("巳经与服务器断开..."); 
	return; 
	} 
	if(sl.startsWith("可以") ){ 
	frame.setVisible(false); 
	setVisible(true); 
	setTitle("欢迎登陆本聊天室   :" + frame.getName()); 
	continue; 
	} 
	else if(sl.startsWith("不可以")){ 
	frame.jTextField1.setText("请重新输入昵称") ; 
	continue; 
	} 

	else if (sl.startsWith("新的朋友")) { 
	StringTokenizer st = new StringTokenizer(sl, ":"); 
	ss = null; 
	s = null; 

	ss = st.nextToken(); 
	s = st.nextToken(); 
	vector.addElement(s); 
	jList1.setListData(vector); 
	continue; 
	} 
	else if (sl.startsWith("下线了")) { 
	StringTokenizer st = new StringTokenizer(sl, ":"); 
	ss = null; 
	s = null; 

	ss = st.nextToken(); 
	s = st.nextToken(); 

	vector.removeElement(s); 
	jList1.setListData(vector); 
	continue; 
	} 
	jTextArea1.append(sl + "\n"); 
	} 

	} 

	public void jButton1_actionPerformed(ActionEvent e) { 
		setClection2(); 


		} 

		public void jButton2_actionPerformed(ActionEvent e) { 
		jTextArea1.setText(""); 
		} 

		public void jTextArea2_keyPressed(KeyEvent e) { 
		if(e.isControlDown() &&e.getKeyCode()==KeyEvent.VK_ENTER ){ 
		setClection2(); 
		} 
		}
		} 

		class Frame1_jTextArea2_keyAdapter extends KeyAdapter { 
		private Frame1 adaptee; 
		Frame1_jTextArea2_keyAdapter(Frame1 adaptee) { 
		this.adaptee = adaptee; 
		} 

		public void keyPressed(KeyEvent e) { 
		adaptee.jTextArea2_keyPressed(e); 
		} 
		} 

		class Frame1_jButton2_actionAdapter implements ActionListener { 
		private Frame1 adaptee; 
		Frame1_jButton2_actionAdapter(Frame1 adaptee) { 
		this.adaptee = adaptee; 
		} 

		public void actionPerformed(ActionEvent e) { 
		adaptee.jButton2_actionPerformed(e); 
		} 
		} 

		class Frame1_jButton1_actionAdapter implements ActionListener { 
		private Frame1 adaptee; 
		Frame1_jButton1_actionAdapter(Frame1 adaptee) { 
		this.adaptee = adaptee; 
		} 

		public void actionPerformed(ActionEvent e) { 

		adaptee.jButton1_actionPerformed(e); 
		} 
		}

⌨️ 快捷键说明

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