「java仿照qq」java copy

博主:adminadmin 2023-01-22 06:09:08 397

今天给各位分享java仿照qq的知识,其中也会对java copy进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

哪位大侠用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的信息别忘了在本站进行查找喔。