📄 002fe6e52ce1001b18c7f243013b4a75
字号:
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(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);
serverSocket.receive(dp);
String rece=new String(dp.getData());
if(rece.length()>0)
{
text1.append("Client 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(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);
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 + -