qq聊天框代码java 用java编写聊天程序

java 如何模仿QQ聊天框那样可以显示文字与图片?。?/h2>两种解决办法,
第一种使用纯java的方式,使用组件JTextPane 或者JEditorPane 来显示图片和文字
第二种使用JEditorPane,但是里面存放HTML代码. 用HTML来控制文字和图片的显示
关于仿QQ聊天对话框的JAVA代码1、swing的界面可以直接用netbeans画出来嘛 。
2、可以把输出的聊天内容都放在一个StringBuffer里,每打出一句话,就把这句话追加在StringBuffer,然后把StringBuffer里的内容输出到Textarea中 。
3、好友列表可以用JList
用JAVA做一个QQ对话框,怎样才能实现在下面的文本框里输入字符,在上面的显示用GUI 加JButton 监听时间new JTextArea(){textqq聊天框代码java , text1}
比如qq聊天框代码java你用text 作输入框text1作接收框
然后 text1.setText(text.getText) , 新文本框就可以获得你输入得内容,但是会出现问题,那就是,后面输入得内容会覆盖 前面得内容qq聊天框代码java!
最好 改成 text1.append(text.getText)
关闭 那个JBotton 按钮 也加个监听时间System.exit(0);
如果还不明白 , 可以询问本人qq聊天框代码java的代码qq聊天框代码java!
QQ客户端Java代码 问题 懂得进来看看吧 完全看不懂 求详细注释new Thread(){
public void run(){
while(true){
实例一个线程
try {
ObjectInputStream ois=
new ObjectInputStream(
s.getInputStream());
打开流通道 接收信息
if("login".equals(type)){
ListString users=msg.getUserList();
if(dlm.getSize()==0){
for(int i=0;iusers.size();i){
dlm.addElement(users.get(i));
}
如果type为‘login’的话获取msg中的userlist()
Object obj=ois.readObject();
Message msg=(Message)obj;
String type=msg.getType();
把接收的信息转成message类型 获取msg中的type信息
System.out.println("hhhh");
debug用无意义
if("login".equals(type)){
ListString users=msg.getUserList();
if(dlm.getSize()==0){
for(int i=0;iusers.size();i){
dlm.addElement(users.get(i));
}
如果type为“login”拿就获取msg中的userlist() 如果dlm中信息量为0 则把userlist()内信息赋给dlm
}else{
dlm.addElement(msg.getFromUser());
}
否则dlm增加信息为msg中的formuser();
String oldMes=showMessage.getText();
String newMes=msg.getSendContent();
if(oldMes==null||"".equals(oldMes)){
showMessage.setText(newMes);
}else{
String allMes=oldMes "\n" newMes;
showMessage.setText(allMes);
}
获取原始信息 新增信息 若原始信息为空则显示新信息 否则显示原始信息换行新信息
else if("logout".equals(type)){
String name2=msg.getFromUser();
if(name2.equals(name)){
dlm.removeAllElements();
}else{
dlm.removeAllElements();
ListString users=msg.getUserList();
for(int i=0;iusers.size();i){
dlm.addElement(users.get(i));
}
}
如果type==“logout” 如果下线的用户是自己则删除dlm所有信息 如果不是自己则dlm删除后重新获取userlist()
下面的都被注释掉了
Java做一个多线程类似于QQ的聊天程序 。//时间关系,粗略的做了一下,一个模拟UDP协议的测试,图标,IP,以及端口都可以设成
//发送者端的电脑参数!
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.io.Serializable;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Day03_A extends JFrame implements Serializable {
private static final long serialVersionUID = 57L;
private JTextArea txtRece, txtSend;// 接受与发送文本域!
private JPanel jp1, jp2;// 面板!
private JScrollPane jsp;
private JLabel jab;// 标签
private JButton jb;// 按钮
private JMenuBar jmb;// 窗体状态栏
private JMenuItem a=null,b=null;
private DatagramSocket dsend = null, drece;
private DatagramPacket dp1, dp2;
private byte[] by1, by2;
private String[][][] menArr= {{{"语言"},{"中文","英文"}}, {{"字体"},{"隶书","彩云",}},{{"辅助"},{"放大","缩小"}}, {{"功能"},{"计算","闹钟"}}};
Day03_A() {
by2 = new byte[1024];
this.setTitle("山寨QQ测试");// 窗体标题
this.setBounds(300, 300, 400, 500);// 位置及大小!
this.setResizable(false);
this.setIconImage(new ImageIcon("E:/Java_Worker/Day_41学习_Gui/src/com/djw/swing01/qq.png").getImage());
this.setLayout(new GridLayout(2, 1));// 网格模式2行1列
init();
this.setJMenuBar(jmb);
this.setVisible(true);
}
private void init() {
jmb = new JMenuBar();
for(int i=0;imenArr.length;i) {
for(int j=0;jmenArr[i].length;j) {
for(int x=0;xmenArr[i][j].length;x) {
if(j==0) {
a=new JMenu(menArr[i][j][x]);
}else {
b=new JMenuItem(menArr[i][j][x]);
a.add(b);
}
}
jmb.add(a);
}
}
jp1 = new JPanel();
jp1.setLayout(new BorderLayout());
txtRece = new JTextArea();
jsp = new JScrollPane(txtRece);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
this.add(jsp);
jp2 = new JPanel();// 面板
jp2.setBackground(new Color(107, 197, 127));
jp2.setLayout(new BorderLayout());
txtSend = new JTextArea();
jab = new JLabel();
jab.setText("[ALT S]/[回车 CTRL]或者[点击发送按钮]:发送信息");
jab.setHorizontalAlignment(JLabel.CENTER);// 标签文本居中
jb = new JButton("发送");
jp2.add(jab, BorderLayout.NORTH);// 指定到面板北面
jp2.add(txtSend, BorderLayout.CENTER);// 文本放中间
jp2.add(jb, BorderLayout.SOUTH);
this.add(jp2);
myeve();
}
private void myeve() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗体可关闭
try {
dsend = new DatagramSocket();// 发送端套接字
drece = new DatagramSocket(10008);
} catch (SocketException e) {
e.printStackTrace();
}
re();// 启动无限循环侦听!
txtSend.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent k) {
if (k.isControlDown()k.getKeyCode() == KeyEvent.VK_ENTER) {
se();
}
if (k.isAltDown()k.getKeyCode() == KeyEvent.VK_S) {
se();
}
}
});
jb.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent arg0) {
se();
txtSend.requestFocus();
}
});
}
private void se() {
try {
by1 = txtSend.getText().getBytes();
dp1 = new DatagramPacket(by1, by1.length, InetAddress.getByName("192.168.2.4"), 10008);
dsend.send(dp1);// 推送数据
txtSend.setText(null);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void re() {
new Thread() {
public void run() {
while (true) {
try {
String time = new SimpleDateFormat("MM-dd/HH:mm").format(new Date());
dp2 = new DatagramPacket(by2, by2.length);
drece.receive(dp2);
String ip = dp2.getAddress().getHostAddress();
txtRece.append("用户IP:"ip"时间:");
txtRece.append(time": "System.getProperty("line.separator"));
txtRece.append(new String(by2, 0, dp2.getLength())System.getProperty("line.separator"));
txtRece.setCaretPosition(txtRece.getText().length());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
}
public static void main(String[] args) {
new Day03_A();
}
}
qq聊天界面怎么写?。?用java语言写爱应用团队为你解答
网络资料
package cn.myself.myproject.FrameProject;import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;import cn.myself.myproject.employeepj.view.common.CenterWindow;
/**
* 程序功能:QQ登陆面板
* 学习内容:GridBagLayout布局方式的学习
* 以GridBagLayout方式布局的容器,其容器中的每个组件必须由一个GridBagConstrains类的实例对象进行大小,位置等约束 。
* @author huliu 2009-06-26
* 难题:a.帐号后面是什么框?
* b.图片的相对路径怎么设置?
*/
public class QQRegistBoard extends JFrame{
JPanel p1;
GridBagLayout gb1;
GridBagConstraints gbc1;
JButton btn1,btn2;
JLabel label0,label1,label2,label3,label4,label5;
JTextField text1,text2;
JComboBox box1,box2;
JCheckBox check1,check2;
JList list1;
/**
* 构造方法
*/
public QQRegistBoard(){
super("2009正式版(huliu)");
p1=new JPanel();
gb1=new GridBagLayout();
gbc1=new GridBagConstraints();
p1.setLayout(gb1);//GridBagLayout布局 。网袋布局
getContentPane().add(p1); //取得当前容器对象
this.setSize(350,250);
CenterWindow.centerW(this);
Icon icon1 = new ImageIcon("./QQ2.jpg");
// Icon icon1 = new ImageIcon("./QQ.jpg"); //加载图片,当前目录下的QQ.jpg
// Icon icon1 = new ImageIcon("src/cn/mysef/images/QQ1.jpg");
label0=new JLabel(icon1);
label1=new JLabel("帐号:");
label2=new JLabel("注册新帐号");
label3=new JLabel("密码:");
label4=new JLabel("取回密码");
label5=new JLabel("状态:");
text1=new JTextField(10);
text2=new JTextField(10);
String[] str1={"313558851","313857401","690442763"};
box1=new JComboBox(str1);
box1.setEditable(true);//设置ComboBox字段值是否为可编辑
box2=new JComboBox();
check1=new JCheckBox("记住密码",true);
check2=new JCheckBox("自动登录");
btn1=new JButton("设置");
btn2=new JButton("登录");
p1.add(label0,GBC(0,0,3,1,new Insets(5,2,2,4)));//图片
p1.add(label1,GBC(1,0,1,1,new Insets(4,2,2,4)));
p1.add(box1, GBC(1,1,1,1,new Insets(4,2,2,0)));
//p1.add(text2,GBC(1,1,1,1));
p1.add(label2,GBC(1,2,1,1,new Insets(4,2,2,3)));
p1.add(label3,GBC(2,0,1,1,new Insets(4,2,2,3)));
p1.add(text1, GBC(2,1,1,1,new Insets(5,2,2,3)));
p1.add(label4,GBC(2,2,1,1,new Insets(4,2,2,3)));
p1.add(label5,GBC(3,0,1,1,new Insets(4,2,2,3)));
p1.add(check1,GBC(3,1,1,1,new Insets(4,2,2,3)));
p1.add(check2,GBC(3,2,1,1,new Insets(4,2,2,3)));
p1.add(btn1 ,GBC(4,0,1,1,new Insets(4,2,2,3)));
p1.add(btn2 ,GBC(4,2,1,1,new Insets(4,2,2,3)));
}
/**
* GBC方法:功能是设计以GridBagLayout方式布局的容器(如Panel容器对象)内的组件的位置,大小等约束的 。
* @param gridy
* @param gridx
* @param gridwidth
* @param gridheight
* @return GridBagStraints实对象
* Insets(int top, int left, int bottom, int right),与其它组件之间距离(上,左,下 , 右)
*/
public GridBagConstraints GBC(int gridy,int gridx,int gridwidth,int gridheight,Insets insets){
GridBagConstraints gbc1=new GridBagConstraints();
gbc1.gridx=gridx; //列
gbc1.gridy=gridy; //行
gbc1.gridwidth=gridwidth;//宽度
gbc1.gridheight=gridheight; //高度
//insets=new Insets(1,1,1,1);
gbc1.insets=insets;
return gbc1;
}
public static void main(String[] args){
new QQRegistBoard().setVisible(true);
}}
望采纳
【qq聊天框代码java 用java编写聊天程序】qq聊天框代码java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于用java编写聊天程序、qq聊天框代码java的信息别忘了在本站进行查找喔 。

    推荐阅读