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

📄 chatclient.java

📁 一个基于局域网的c/s模式网上购物系统,功能比较全面.数据库为Access.
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
import java.io.*;

	
class ChatClient
{
	private JDialog dialog;
	private JTextArea echo,send;
	private Socket socket;
	private BufferedReader in;
	private PrintWriter out;
	private receive r;
	private String Cname;
	private String Mname;

	class receive extends Thread
	{

		receive()throws IOException
		{
			start();
		}
	
		public void run()
		{
			String msg=null;
			String nextmsg=null;
			try
			{
				nextmsg=in.readLine();
			}catch(IOException ioe){}
			
			while(nextmsg!=null)
			{
				try
				{
					if(nextmsg.equals("CHATOVER"))
					{
						break;
					}
					
					if(echo.getLineCount()>30)
					{
						msg=echo.getText();
						msg=msg.substring(msg.indexOf("\n")+1);
						echo.setText(msg+'\n'+Mname+":"+nextmsg);
					}
					else
					{
						if(!echo.getText().equals(""))
						{
							echo.append('\n'+Mname+":"+nextmsg);
							//echo.setText(echo.getText()+'\n'+Mname+":"+nextmsg);
						}
						else
						{
							echo.setText(Mname+":"+nextmsg);
						}
					}
				nextmsg=in.readLine();

				}catch(IOException e){System.out.println(e);break;}
			}
			System.out.println("CHAT END");
			try
			{
				in.close();
			}catch(Exception e){}
		}
	}
	
	ChatClient(String name,String IP,JDialog fd)throws Exception
	{
		
		socket = new Socket(IP, 8001);
		
	    
	    Thread.sleep(100);	
	    in = 
	      new BufferedReader(
	    	new InputStreamReader(
	       	  socket.getInputStream()));
     
	   	out = 
	   	  new PrintWriter(
	   	    new BufferedWriter(
   		      new OutputStreamWriter(
   		        socket.getOutputStream())), true);
		
		Cname = name;
		Mname = in.readLine();
		
		dialog = new JDialog(fd,"Chat",true);
		
		JPanel textPanel = new JPanel();
		textPanel.setLayout(new GridBagLayout());
		textPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK,2),
	  	                "聊天信息",TitledBorder.CENTER,TitledBorder.TOP));
	  	
	    GridBagConstraints gbc = new GridBagConstraints();
	    gbc.anchor = GridBagConstraints.WEST; 
	    gbc.insets = new Insets(2,2,2,2); 
    
	    echo = new JTextArea(10,30);
	    JPanel t1 = new JPanel();
		t1.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
		t1.setLayout(new GridLayout(0,1));
		t1.add(echo);
	    
	    send = new JTextArea(3,30);
	    send.addKeyListener(new KeyListener(){
	    	public void keyPressed(KeyEvent e)
  			{
  				int keyCode = e.getKeyCode();
  				if(keyCode==KeyEvent.VK_ENTER && e.isControlDown())
  				{
  					out.println(send.getText());
					try
					{
					
						if(echo.getLineCount()>30)
						{
							String msg=echo.getText();
							msg=msg.substring(msg.indexOf('\n')+1);
							echo.setText(msg+'\n'+Cname+":"+send.getText());
						}
						else
						{
							if(echo.getText().equals(""))
							{
								echo.setText(Cname+":"+send.getText());
							}
							else
							{
								echo.append('\n'+Cname+":"+send.getText());
								//echo.setText(echo.getText()+'\n'+Cname+":"+send.getText());
							}
						}
	
					}catch(Exception ex){}
					send.setText("");
  				}
  			}
  	
  			public void keyTyped(KeyEvent e)
  			{
  		
  			}
  	
  			public void keyReleased(KeyEvent e)
  			{

  			};
  		});
	    JPanel t2 = new JPanel();
		t2.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
		t2.setLayout(new GridLayout(0,1));
		t2.add(send);

    	gbc.gridy=1;
    	gbc.gridx=0;
    	textPanel.add(new JLabel("Receive:"),gbc);
		gbc.gridy=2;
		textPanel.add(new JScrollPane(t1),gbc);
		gbc.gridy=3;
		gbc.gridx=0;
		textPanel.add(new JLabel("Send:"),gbc);
		gbc.gridy=4;
		textPanel.add(new JScrollPane(t2),gbc);

		JPanel p = new JPanel();
		
		JButton b = new JButton("发送");
		b.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				System.out.println(send.getText());
				out.println(send.getText());
				try
				{
					
					if(echo.getLineCount()>30)
					{
						String msg=echo.getText();
						msg=msg.substring(msg.indexOf('\n')+1);
						echo.setText(msg+'\n'+Cname+":"+send.getText());
					}
					else
					{
						if(echo.getText().equals(""))
						{
							echo.setText(Cname+":"+send.getText());
						}
						else
						{
							echo.append('\n'+Cname+":"+send.getText());
							//echo.setText(echo.getText()+'\n'+Cname+":"+send.getText());
						}
					}
	
				}catch(Exception ex){}
				send.setText("");
			}
		});

		p.add(b);
		
		b = new JButton("退出");
		b.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				try
        		{
        			out.println("CHATOVER");
					dialog.dispose();
					out.close();
					socket.close();
				}catch(Exception ex){}
			}
		});
		
		p.add(b);
	
		try
		{
			r = new receive();

			dialog.add(textPanel,BorderLayout.NORTH);
			dialog.add(p,BorderLayout.SOUTH);
			dialog.setBounds(365,310,360,400);
			dialog.setResizable(false);
	        dialog.setVisible(true);
	        
	        dialog.addWindowListener(new WindowAdapter(){
        		public void windowClosing(WindowEvent e)
        		{
        			try
        			{
        				out.println("CHATOVER");
						dialog.dispose();
						out.close();
						socket.close();
					}catch(Exception ex){}
				}

        	});
    
        }catch(IOException ex){}
        
	}
}

⌨️ 快捷键说明

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