速求用JAVA语言写聊天室的源代码。 提示:使用Swing图形用户界面、多线程、网络编程等技术。 20
要求一个登录界面与一个聊天室,鼠标点击登录之后进入聊天室,只需要能够简单的实现群聊、私聊就行。要源代码,谢谢。...
要求一个登录界面与一个聊天室,鼠标点击登录之后进入聊天室,只需要能够简单的实现群聊、私聊就行。要源代码,谢谢。
展开
展开全部
还不是很完善的
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.InetAddress;
import java.net.DatagramSocket;
import java.net.DatagramPacket;
public class ChatRoom{
public static void main(String []args){
JFrame f=new JFrame();
f.setSize(700,600);
f.setTitle("聊天室");
f.setLayout(null);
//创建文本域:
final JTextArea textshow=new JTextArea();
textshow.setBounds(0,0,700,300);
textshow.setEditable(false);//不可编辑
f.add(textshow);
//创建标签1;
JLabel lab1=new JLabel();
lab1.setBounds(100,320,80,20);
lab1.setText("IP地址:");
f.add(lab1);
//ip地址文本框:
final JTextField text=new JTextField();
text.setBounds(190,320,100,20);
text.setText("127.0.0.1");
f.add(text);
//标签2:
JLabel lab2=new JLabel();
lab2.setBounds(310,320,80,20);
lab2.setText("端口号:");
f.add(lab2);
//端口 文本框
final JTextField textport=new JTextField();
textport.setBounds(400,320,100,20);
textport.setText("8888");
textport.setEditable(false);
f.add(textport);
//输入文本域:
final JTextArea textsend=new JTextArea();
textsend.setBounds(0,360,700,160);
f.add(textsend);
//发送按钮:
JButton btn1=new JButton();
btn1.setText("发送信息");
btn1.setBounds(590,530,100,30);
f.add(btn1);
btn1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String userIp=text.getText();
String userPort=textport.getText();
String usertext=textsend.getText();
try
{
InetAddress add=InetAddress.getByName(userIp);
int port=new Integer(userPort);
byte []bs=usertext.getBytes();
DatagramPacket dp=new DatagramPacket(bs,bs.length,add,port);
DatagramSocket ds=new DatagramSocket();
ds.send(dp);
textsend.setText("");
textsend.requestFocus();
}
catch (Exception ex)
{
}
}
});
new Thread(){
public void run(){
try
{
DatagramSocket ds=new DatagramSocket(8888);
while (true)
{
byte []bs=new byte[1024];
DatagramPacket dp=new DatagramPacket(bs,1024);
ds.receive(dp);
String str=new String(bs);
str=str.trim();
if (textshow.getText().equals(""))
{
textshow.setText(str);
continue;
}
textshow.setText(textshow.getText()+"\r\n"+str);
}
}
catch (Exception ex)
{
}
}
}.start();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.InetAddress;
import java.net.DatagramSocket;
import java.net.DatagramPacket;
public class ChatRoom{
public static void main(String []args){
JFrame f=new JFrame();
f.setSize(700,600);
f.setTitle("聊天室");
f.setLayout(null);
//创建文本域:
final JTextArea textshow=new JTextArea();
textshow.setBounds(0,0,700,300);
textshow.setEditable(false);//不可编辑
f.add(textshow);
//创建标签1;
JLabel lab1=new JLabel();
lab1.setBounds(100,320,80,20);
lab1.setText("IP地址:");
f.add(lab1);
//ip地址文本框:
final JTextField text=new JTextField();
text.setBounds(190,320,100,20);
text.setText("127.0.0.1");
f.add(text);
//标签2:
JLabel lab2=new JLabel();
lab2.setBounds(310,320,80,20);
lab2.setText("端口号:");
f.add(lab2);
//端口 文本框
final JTextField textport=new JTextField();
textport.setBounds(400,320,100,20);
textport.setText("8888");
textport.setEditable(false);
f.add(textport);
//输入文本域:
final JTextArea textsend=new JTextArea();
textsend.setBounds(0,360,700,160);
f.add(textsend);
//发送按钮:
JButton btn1=new JButton();
btn1.setText("发送信息");
btn1.setBounds(590,530,100,30);
f.add(btn1);
btn1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String userIp=text.getText();
String userPort=textport.getText();
String usertext=textsend.getText();
try
{
InetAddress add=InetAddress.getByName(userIp);
int port=new Integer(userPort);
byte []bs=usertext.getBytes();
DatagramPacket dp=new DatagramPacket(bs,bs.length,add,port);
DatagramSocket ds=new DatagramSocket();
ds.send(dp);
textsend.setText("");
textsend.requestFocus();
}
catch (Exception ex)
{
}
}
});
new Thread(){
public void run(){
try
{
DatagramSocket ds=new DatagramSocket(8888);
while (true)
{
byte []bs=new byte[1024];
DatagramPacket dp=new DatagramPacket(bs,1024);
ds.receive(dp);
String str=new String(bs);
str=str.trim();
if (textshow.getText().equals(""))
{
textshow.setText(str);
continue;
}
textshow.setText(textshow.getText()+"\r\n"+str);
}
}
catch (Exception ex)
{
}
}
}.start();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
展开全部
给你个网址 你自己去学下吧 http://blog.csdn.net/qqiabc521/article/details/6393693 要源码的话 还是没办法的 因为那个聊天室的源码大概要几百块。 你要20分拿到是不太现实的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
20分。。你以为编个软件那么容易?就你说的这个,没一周时间做的出来?谁抽风了。。
追问
我学的就是Java!最基本的还是懂得!请不要为你自己没能力找借口,那样只会使你看起来更加没能力!既然不会做,你跟什么帖子!
追答
。。。好吧,就你学的JAVA。。那你继续。我看着有人给你做个源代码出来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询