「java仿照qq」java copy
今天给各位分享java仿照qq的知识,其中也会对java copy进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、哪位大侠用java做个类似QQ的程序
- 2、用javaweb实现漂流瓶功能
- 3、关于仿QQ聊天对话框的JAVA代码
- 4、java 如何模仿QQ聊天框那样可以显示文字与图片啊?
- 5、用java怎么实现QQ登录界面?
哪位大侠用java做个类似QQ的程序
//无语音和视频,只有聊天和文件收发,不知能否能帮你
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class test
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
DrawFrame frame = new DrawFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class DrawFrame extends JFrame
{
public DrawFrame()
{
setLocation(100,100);
setTitle("我的QQ");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
//添加菜单项……
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu edit = new JMenu("菜单");
menuBar.add(edit);
JMenuItem sset = new JMenuItem("设置");
JMenuItem eexit = new JMenuItem("退出");
edit.add(sset);
edit.addSeparator();
edit.add(eexit);
final DrawPanel pan = new DrawPanel();
//添加设置对话框
sset.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
final JFrame jf = new JFrame("设置");
jf.setSize(300,150);
jf.setLocation(200,200);
jf.setResizable(false);
jf.setVisible(true);
JPanel jp = new JPanel();
final JTextField jt1 = new JTextField(20);
final JTextField jt2 = new JTextField(20);
final JTextField jt3 = new JTextField(20);
jp.add(new JLabel("聊天端口:"));
jf.add(jp);
jp.add(jt1);
jp.add(new JLabel("目标地址:"));
jp.add(jt2);
jp.add(new JLabel("文件端口:"));
jp.add(jt3);
JButton jb1 = new JButton("确定");
JButton jb2 = new JButton("取消");
jp.add(jb1);
jp.add(jb2);
//设置“设置”按钮
jb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
try{
int cat1 = Integer.parseInt(jt1.getText());
pan.setCat1(cat1);//设置对话端口号
int cat2 = Integer.parseInt(jt3.getText());
pan.setCat2(cat2);//设置文件传输端口号
String s = jt2.getText();
pan.setIP(s);//设置IP地址
pan.ls();
}
catch(Exception e)
{
e.printStackTrace();
}
jf.dispose();//关闭对话框
}
});
jb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
jf.dispose();
}
});
}
});
eexit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
System.exit(0);
}
});
add(pan);
pack();
}
public static final int DEFAULT_WIDTH = 400;
public static final int DEFAULT_HEIGHT = 400;
}
class DrawPanel extends JPanel
{
DatagramSocket ds;
DatagramPacket dp;
DatagramSocket ds1;
DatagramPacket dp1;
Thread thread;
Thread thread1;
TextArea textArea1 = new TextArea(10,50);
TextArea textArea2 = new TextArea(10,50);
JTextField textField = new JTextField(50);
static int cat1,cat2;
static String IP;
public void setCat1(int cat)
{
cat1 = cat;
}
public void setCat2(int cat)
{
cat2 = cat;
}
public void setIP(String ip)
{
IP=ip;
}
//重置端口号
public void ls()
{
try
{
ds = new DatagramSocket(cat1);
ds1 = new DatagramSocket(cat2);
}
catch(Exception e)
{
e.printStackTrace();
}
thread = new Thread(new Runnable()
{
public void run()
{
byte buf[] = new byte[1024];//聊天每次发送文字不能超过1024b
DatagramPacket dp = new DatagramPacket(buf,buf.length);
while(true)
{
try
{
ds.receive(dp);
textArea1.setText(textArea1.getText()+ new String(buf,0,dp.getLength()) + "\r\n");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
});
thread.start();
}
public DrawPanel()
{
setLayout(new BorderLayout());
JTabbedPane card = new JTabbedPane();
textArea1.setEditable(false);
card.add("聊天",textArea1);
add(card,BorderLayout.NORTH);
JPanel center = new JPanel();
center.setLayout(new FlowLayout());
center.add(new JLabel("昵称:"));
center.add(textField);
add(center,BorderLayout.CENTER);
JPanel south = new JPanel();
south.setLayout(new BorderLayout());
south.add(textArea2,BorderLayout.NORTH);
JPanel south2 = new JPanel();
south2.setLayout(new FlowLayout());
JButton sent = new JButton("传送文件");
JButton receive = new JButton("接收文件");
//receive.setEnabled(false);
JButton sentMessage = new JButton("发送");
south2.add(sent);
south2.add(receive);
south2.add(sentMessage);
add(south,BorderLayout.SOUTH);
south.add(south2,BorderLayout.SOUTH);
//发送信息的按钮的监听器:
sentMessage.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
textArea1.append(textField.getText()+":"+textArea2.getText()+"\n");
String s;
try
{
s = textField.getText() + ":" + textArea2.getText();
byte[] buf = s.getBytes();
dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(IP),cat1);
ds.send(dp);
textArea2.setText("");
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
});
//发送文件的按钮的监听器
sent.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
JFrame f = new JFrame("打开");
f.setSize(400,300);
JFileChooser chooser = new JFileChooser();
f.add(chooser);
int returnVal = chooser.showOpenDialog(f);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
textArea1.append("正在传送文件:"+chooser.getCurrentDirectory()+"\\"
+chooser.getSelectedFile().getName()+"\n");
try
{
byte[] b = new byte[10248];
FileInputStream fis = new FileInputStream(chooser.getSelectedFile());
DataInputStream dos =new DataInputStream(fis);
dos.read(b);
dp1 = new DatagramPacket(b,b.length,InetAddress.getByName(IP),cat2);
ds1.send(dp1);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
});
//接收文件的按钮的监听器:
receive.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
JFrame f1 = new JFrame("保存");
f1.setSize(400,300);
byte buf[] = new byte[10248];
DatagramPacket dp1 = new DatagramPacket(buf,buf.length);
JFileChooser ch = new JFileChooser();
f1.add(ch);
int a = ch.showSaveDialog(f1);
if(a ==JFileChooser.APPROVE_OPTION)
{
String fileName = ch.getSelectedFile().getPath();
try
{
ds1.receive(dp1);
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(buf);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
});
}
}
用javaweb实现漂流瓶功能
你可以设计成这样,我的思路:分别有3个实体:用户、瓶子 和 大海;用户可以收藏瓶子,大海也有瓶子,对吧,扔瓶子次数啊什么的都很好实现的,分类什么的,你都可以自己实现,这个很简单。主要就是捞瓶子就是从大海中随机拿,大海相当于一个容器,它存放不固定数量的瓶子,当用户去捞的时候,就是从大海中拿掉一个,那时候,瓶子的所属权发生了改变,就属于捞它的那个用户了,不在属于大海了,这样别人就捞不到了。然后删除啊,收藏啊,扔回啊,都很好理解了吧,QQ的话还有什么同城的,不过就是优化细节而已。这是我理解的原理。
关于仿QQ聊天对话框的JAVA代码
1、swing的界面可以直接用netbeans画出来嘛。
2、可以把输出的聊天内容都放在一个StringBuffer里,每打出一句话,就把这句话追加在StringBuffer,然后把StringBuffer里的内容输出到Textarea中。
3、好友列表可以用JList
java 如何模仿QQ聊天框那样可以显示文字与图片啊?
两种解决办法,
第一种使用纯java的方式,使用组件JTextPane 或者JEditorPane 来显示图片和文字
第二种使用JEditorPane,但是里面存放HTML代码. 用HTML来控制文字和图片的显示
用java怎么实现QQ登录界面?
用java做QQ登录界面的写法如下:
package ch10;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
1、//定义该类继承自JFrame,实现ActionListener接口
public class LoginTest extends JFrame implements ActionListener
{
2、//创建JPanel对象
private JPanel jp=new JPanel();
3、//创建3个标并加入数组
JLabel name = new JLabel("请输入用户名");
JLabel password = new JLabel("请输入密码");
JLabel show = new JLabel("");
private JLabel[] jl={name,password,show};
4、//创建登陆和重置按扭并加入数组
JButton login = new JButton("登陆");
JButton reset = new JButton("重置");
private JButton[] jb={login,reset};
5、//创建文本框以及密码框
private JTextField jName=new JTextField();
private JPasswordField jPassword =new JPasswordField();
public LoginTest()
{
6、//设置布局管理器为空布局,这里自己摆放按钮、标签和文本框
jp.setLayout(null);
for(int i=0;i2;i++)
{
7、//设置标签和按扭的位置与大小
jl[i].setBounds(30,20+40*i,180,20);
jb[i].setBounds(30+110*i,100,80,20);
8、//添加标签和按扭到JPanel容器中
jp.add(jl[i]);
jp.add(jb[i]);
//为2个按钮注册动作事件监听器
jb[i].addActionListener(this);
}
9、//设置文本框的位置和大小,注意满足美观并足够用户名的长度
jName.setBounds(130,15,100,20);
10、//添加文本框到JPanel容器中
jp.add(jName);
11、//为文本框注册动作事件监听器
jName.addActionListener(this);
12、//设置密码框的位置和大小,注意满足美观和足够密码的长度
jPassword.setBounds(130,60,100,20);
13、//添加密码框到JPanel容器中
jp.add(jPassword);
14、//设置密码框中的回显字符,这里设置美元符号
jPassword.setEchoChar('$');
15、//为密码框注册动作事件监听器
jPassword.addActionListener(this);
16、//设置用于显示登陆状态的标签大小位置,并将其添加进JPanel容器
jl[2].setBounds(10,180,270,20);
jp.add(jl[2]);
17、//添加JPanel容器到窗体中
this.add(jp);
18、//设置窗体的标题、位置、大小、可见性及关闭动作
this.setTitle("登陆窗口");
this.setBounds(200,200,270,250);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
19、//实现动作监听器接口中的方法actionPerformed
public void actionPerformed(ActionEvent e)
{
20、//如果事件源为文本框
if(e.getSource()==jName)
{
21、//切换输入焦点到密码框
jPassword.requestFocus();
}
22、//如果事件源为重置按扭
else if(e.getSource()==jb[1])
{
23、//清空姓名文本框、密码框和show标签中的所有信息
jl[2].setText("");
jName.setText("");
jPassword.setText("");
24、//让输入焦点回到文本框
jName.requestFocus();
}
25、//如果事件源为登陆按钮,则判断登录名和密码是否正确
else
{
26、//判断用户名和密码是否匹配
if(jName.getText().equals("lixiangguo")
String.valueOf(jPassword.getPassword()).equals("19801001"))
{
27、jl[2].setText("登陆成功,欢迎您的到来!");
}
else
{
28、jl[2].setText("对不起,您的用户名或密码错误!");
}
}
}
public static void main(String[] args)
{
29、//创建LoginTest窗体对象
new LoginTest();
}
}
java仿照qq的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java copy、java仿照qq的信息别忘了在本站进行查找喔。