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

📄 clientframe.java

📁 这是一个简单的聊天程序
💻 JAVA
字号:
/*
 * Created on 2004-12-15
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */

/**
 * @author mq
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;

import java.io.*;
import java.net.*;

public class ClientFrame extends JFrame {
	private JComboBox combobox;
	private JTextArea textarea;
	private JTextField textfield;
	private JCheckBox checkbox;
	private JComboBox actionlist;
	private JButton login;
	private JButton logout;
	private Border border;
	private JTextField seperater;
	
	Socket socket;
	ObjectOutputStream output;
	ObjectInputStream  input;
	
	ClientReceiveThread recvThread;
	
	public ClientFrame()
	{
		super("client");
		
		border = BorderFactory.createCompoundBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white,Color.white,Color.white),BorderFactory.createEmptyBorder(1,1,1,1));
		
		login = new JButton("login");
		logout= new JButton("logout");
		logout.setEnabled(false);
		
		combobox = new JComboBox();
		combobox.addItem("all");
		combobox.setSelectedIndex(0);
		
		textarea = new JTextArea(20,20);
		textarea.setEditable(false);
		
		textfield = new JTextField("请输入您的昵称!",20);
		
		seperater = new JTextField("",20);
		seperater.setEditable(false);
		
		checkbox = new JCheckBox("悄悄话");
		checkbox.setSelected(false);
		
		actionlist = new JComboBox();
		actionlist.addItem("微笑着");
		actionlist.addItem("生气地");
		actionlist.addItem("小心地");
		actionlist.setSelectedIndex(0);
		
		login.setBorder(border);
		login.setBounds( 30,30,90,30);
		logout .setBorder(border);
		logout .setBounds(150,30,90,30);
		
		seperater.setBounds(30, 75,300, 20);
		textarea .setBounds(30,110,300,300);
		combobox .setBounds(30,425, 90, 30);
		actionlist .setBounds(150,425, 90, 30);
		checkbox .setBounds(270,425, 90, 30);
		textfield.setBounds(30,470,300, 20);

		Container c = getContentPane();
		c.setLayout(null);
		
		c.add(login ,null);
		c.add(logout,null);
		c.add(seperater,null);
		c.add(textarea,null);
		c.add(combobox,null);
		c.add(actionlist,null);
		c.add(checkbox,null);
		c.add(textfield,null);
		
		login.addActionListener(
			new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					LogIn();
				}
			}
		); 
		
		logout.addActionListener(
			new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					LogOut();
				}
			}
		); 
		
		textfield.addActionListener(
			new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					SendMessage();
				}
			}
		); 
	
		this.addWindowListener(
			new WindowAdapter()
			{
				public void windowClosing(WindowEvent e)
				{
					LogOut();
					System.exit(0);
				}
			}
		);	
						
		setSize(370,570); 
		show();
	}
	
	public void LogIn()
	{
		try
		{
			socket = new Socket("59.64.7.48",8000);
			output = new ObjectOutputStream(socket.getOutputStream());
			output.flush();
			input  = new ObjectInputStream(socket.getInputStream() );
			
			output.writeObject(textfield.getText());
			output.flush();
			
			recvThread = new ClientReceiveThread(socket,output,input,combobox,textarea);
			recvThread.start();
			
			login.setEnabled(false);
			logout.setEnabled(true);
			textfield.setText("请输入聊天信息!");
		}
		catch (Exception e)
		{
			//
		}
	}
	
	public void LogOut()
	{
		login.setEnabled(true);
		logout.setEnabled(false);
		textfield.setText("请输入您的昵称!");
		
		if(socket.isClosed())
		{
			return ;
		}
		
		try
		{
			output.writeObject("用户下线");
			output.flush();
		
			input.close();
			output.close();
			socket.close();
		}
		catch (Exception e)
		{
			//
		}
	}
	
	public void SendMessage()
	{
		String toSomebody = combobox.getSelectedItem().toString();
		String status  = "";
		if(checkbox.isSelected())
		{
			status = "悄悄话";
		}
		
		String action = actionlist.getSelectedItem().toString();
		String message = textfield.getText();
		
		if(socket.isClosed())
		{
			return ;
		}
		
		try
		{
			output.writeObject("聊天信息");
			output.flush();
			output.writeObject(toSomebody);
			output.flush();
			output.writeObject(status);
			output.flush();
			output.writeObject(action);
			output.flush();
			output.writeObject(message);
			output.flush();
		}
		catch (Exception e)
		{
			//
		}
	}
}

⌨️ 快捷键说明

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