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

📄 c043187b2ce1001b18c7f243013b4a75

📁 简易聊天室,可能不很完善,请大家多提宝贵意见啊,本人纯属新手啊,请大家多多扶持
💻
字号:
package com.briup.test;

import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;


public class ChatRoom
{  
    private JFrame frame;
    private Container contentPane;
    private JLabel ltltle,lmess,lsmes;
    private TextArea text1,text2;
    private JButton bsend,bstart,bbreak;
    private JRadioButton bserver,bclient;
    private ButtonGroup bg;
    private JTextField tf1;
    private DatagramSocket serverSocket,clientSocket;
    private String strcontext="";
    private JScrollPane scroll;
       
   
    public ChatRoom()
   {
      frame=new JFrame("简易聊天室");
      frame.setBounds(300,300,460,460);
      frame.setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE);
      contentPane=frame.getContentPane();
      frame.setResizable(true);
      initGUI();
   }
    public void initGUI()
  {
      contentPane.setLayout(new GridLayout(4,1,5,5));
             
      JPanel p1=new JPanel(new GridLayout(2,1));
      JPanel p11=new JPanel(new FlowLayout());
      JPanel p12=new JPanel(new FlowLayout());
      bserver=new JRadioButton("Serversocket");
      bclient=new JRadioButton("Clientsocket");
          tf1=new JTextField(20);
	   tf1.setEditable(false);
    ButtonGroup bg=new ButtonGroup();
    bg.add(bserver);
    bg.add(bclient);
      JLabel ltitle=new JLabel("Welcome to our chatroom!");
     
       p11.add(ltitle);
       p12.add(bserver);
       p12.add(bclient);
       p12.add(tf1);
      p1.add(p11);
      p1.add(p12);
      
    JPanel p2=new JPanel(new FlowLayout());
    //int scrollbars=SCROLLBARS_VERTICAL_ONLY;
     text1=new TextArea("HeiHei",5,50);
     scroll=new JScrollPane(text1);
      p2.add(scroll);
   
        
       JPanel p3=new JPanel(new FlowLayout());
         text2=new TextArea("Please Write",3,50);
        p3.add(text2);

    JPanel p4=new JPanel(new FlowLayout());
     bstart=new JButton("Start");
     bsend=new JButton("Send Message");
     bbreak=new JButton("Break");
       p4.add(bstart);
       p4.add(bsend);
       p4.add(bbreak);

         contentPane.add(p1);
         contentPane.add(p2);
         contentPane.add(p3);
         contentPane.add(p4);
    



ActionListener listener =new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{      if(e.getSource()==bstart)
				{    try
					{       if(bserver.isSelected()==false && bclient.isSelected()==false)
                                                 { tf1.setText("Please choose a mode!");
                                                   return;
                                                         }
						if(bserver.isSelected()==true)
						{
							text2.setText("");
							bserver.setEnabled(false);
							bclient.setEnabled(false);
							Server server=new Server();
						}
						if(bclient.isSelected()==true)
						{
							bserver.setEnabled(false);
							bclient.setEnabled(false);
							text2.setText("");
							Client client=new Client();
						}
					}catch(Exception e1)
					{
						tf1.setText("Connection Error!!!");
					}
				}

				 
				if(e.getSource()==bsend)
				{
					try
					{
						strcontext=text2.getText();
						if(strcontext.length()>0)
						{
							text1.append(strcontext+"\n");
						}
						text2.setText("");
						byte [] buffer=new byte[strcontext.length()];
						buffer=strcontext.getBytes();
						DatagramPacket packet;
						if(bserver.isSelected()==true)
						{
							packet=new DatagramPacket(buffer,buffer.length,new InetSocketAddress("127.0.0.1",8888));
							serverSocket.send(packet);
                                                      
						}
						if(bclient.isSelected()==true)
						{
							packet=new DatagramPacket(buffer,buffer.length,new InetSocketAddress("127.0.0.1",8889));
							clientSocket.send(packet);
                                                      
						}
				
					}catch(Exception e1)
					{
						e1.printStackTrace();
					}
				}
				
				if(e.getSource()==bbreak)
				{
					try
					{
						if(bserver.isSelected()==true)
						{
							serverSocket.close();
							Thread.currentThread().interrupt();
						}
						if(bclient.isSelected()==true)
						{
							clientSocket.close();
							Thread.currentThread().interrupt();
						}
						tf1.setText("Now Broken");
						bstart.setEnabled(true);
						bsend.setEnabled(false);			
						bbreak.setEnabled(false);
					}catch(Exception e1)
					{
						tf1.setText("Break Error");
					}
					

				}
			}
		};

		bstart.addActionListener(listener);
		bsend.addActionListener(listener);
		bbreak.addActionListener(listener);
		
	}




  public class Server implements Runnable
   {    public Server()
        {
          new Thread(this).start();  
        }
        public void run()
      {      try{
           bstart.setEnabled(false);
           serverSocket=new DatagramSocket(8888);
           text1.setText("Host IP is:"+InetAddress.getLocalHost().getHostAddress()+"\n");
           tf1.setText("connection...");
           bsend.setEnabled(true);
           bbreak.setEnabled(true);
                  }catch(Exception e)
                      { e.printStackTrace();
                       }

         try{
           while(true)
            {
               byte [] buffer=new byte[1024];
               DatagramPacket dp=new DatagramPacket(buffer,buffer.length);
               serverSocket.receive(dp);
               String rece=new String(dp.getData());
              if(rece.length()>0)
	          {
		     text1.append("Server said:       "+rece+"\n");			
		    }
	    }
            }catch(Exception e)
               { e.printStackTrace();
               }
                    
      }
   }
   public class Client implements Runnable
   {   
        public Client()
        {
           new Thread(this).start();
              
        }
       public void run()
       {        try{
             bstart.setEnabled(false);
             clientSocket=new DatagramSocket(8889);
             text1.setText("Host IP is:"+InetAddress.getLocalHost().getHostAddress()+"\n");
             tf1.setText("connection...");
             bsend.setEnabled(true);
             bbreak.setEnabled(true);
                     }catch(Exception e)
                         {
                           e.printStackTrace();
                          }
              try{
            while(true)
               {
                   byte [] buffer=new byte[1024];
                   DatagramPacket dp=new DatagramPacket(buffer,buffer.length);
                   clientSocket.receive(dp);
                   String rece=new String(dp.getData());
                 if(rece.length()>0)
	          {
		     text1.append("Client said:       "+rece+"\n");			
		    }
                       
               }
               }catch(Exception e)
                   {e.printStackTrace();
                    }
        
        }
   }    

     public void go()
    {
       frame.setVisible(true);    
    }
     public static void main(String args[])
    {
       (new ChatRoom()).go();
    }



            
      
   
   
   
}

⌨️ 快捷键说明

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