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

📄 chat.java

📁 实现图形化界面聊天功能
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

public class Chat
{
	JFrame f = new JFrame();
	JTextArea jtaMessage = new JTextArea();
	JTextField jtfIP = new JTextField(15);
	JTextField jtfMessage = new JTextField(100);
	JButton b = new JButton("Send");
	DatagramSocket ds;
	Thread thread;
	
	public Chat()
	{
		jtaMessage.setFocusable(false);
		jtfIP.setText("127.0.0.1");
		jtfIP.setFocusable(false);
		try
		{
			ds = new DatagramSocket(5000);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		thread = new Thread(new Runnable()
			{
				public void run()
				{
					byte buf[] = new byte[1024];
					DatagramPacket dp = new DatagramPacket(buf,buf.length);
					while(true)
					{
						try
						{
							ds.receive(dp);
							jtaMessage.setText(jtaMessage.getText() + new String(buf,0,dp.getLength()) + "\r\n");
						}
						catch(Exception e)
						{
							e.printStackTrace();
						}
					}
				}
			}
		);
		thread.start();
	}
	public static void main(String[] args)
	{
		new Chat().init();
	}
	public void init()
	{
		f.setSize(500,500);
		JPanel p = new JPanel();
		p.setLayout(new BorderLayout());
		p.add(jtfIP,BorderLayout.WEST);
		p.add(jtfMessage,BorderLayout.CENTER);
		p.add(b,BorderLayout.EAST);
		f.getContentPane().add(jtaMessage);
		f.getContentPane().add(p,BorderLayout.SOUTH);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
		f.setResizable(false);
		
		b.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					try
					{
						byte[] buf = jtfMessage.getText().getBytes();
						DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(jtfIP.getText()),5000);
						ds.send(dp);
						jtfMessage.setText("");
						jtfMessage.requestFocus(true);
					}
					catch(Exception ex)
					{
						ex.printStackTrace();
					}
				}
			}
		);
		
		f.addWindowListener(new WindowAdapter()
			{
				public void windowClosing(WindowEvent e)
				{
					thread.stop();
					ds.close();
				}
			}
		);
	}
}

⌨️ 快捷键说明

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