亲身体验用Java写的仿qq聊天界面

   Java开发工具有许多种,新手用记事本写Java程序,有些人用NetBean,jbuilder,高手用eclipse,下面介绍用eclipse开发qq聊天界面。

   代码如下:


package Myjava_QQ;

import java.awt.*;
import javax.swing.*;

import Myjava_QQ.truess;

import java.awt.event.*;
import java.applet.*;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.*;
import java.sql.*;
import java.lang.*;

class Imagecanvas extends Canvas
{ Toolkit tool;
Image myimage;
Imagecanvas()
     {
     setSize(326,47);
     tool=getToolkit();
     myimage=tool.getImage("h.jpg");
     
       }
public void paint(Graphics g)
{
   g.drawImage(myimage,0,0,326,47,this);
   }

}

//class Paii5 extends JFrame implements ActionListener


class Paii5 extends JFrame 
{
Paii5() 
{
   
   setResizable(false);

//Frame fra=new Frame("QQ2010");
   //setSize(330,240);
   setBounds(350, 300, 330,240);
Container c=getContentPane();
//c.setLayout(new FlowLayout(100,100,10));
FlowLayout layout=new FlowLayout(FlowLayout.CENTER);
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
ImageIcon image=new ImageIcon(getClass().getResource("/image/0.jpg"));//创建一个未初始化的图像图标
     JLabel jl5=new JLabel(image);//http://benqubo.spaces.live.com/Blog/cns!97A24DA5D4C1908B!322.entry
Imagecanvas canvas1=new Imagecanvas(); 
     //p1.setSize(326,47); 
     //p1.add(canvas1);
    
      final JTextField username=new JTextField(11);
      final TextField paword=new TextField(15);
        paword.setEchoChar('*');
JButton buttonentrystu=new JButton("申请号码");
     JButton buttonentryteacher=new JButton("高级设置");
     JButton buttonentryadmin=new JButton("登 录");
     JButton buttοnreset=new JButton("取 消");
     JCheckBox check1=new JCheckBox("自动登陆    ");
     JCheckBox check2=new JCheckBox("隐身登陆");
        
     JPanel p21=new JPanel();
     JPanel p22=new JPanel();
     p21.add(new JLabel("QQ号码:"));
     p21.add(username);
     p21.add(buttonentrystu);
     p21.add(new JLabel("QQ密码:"));
     p21.add(paword);
     p21.add(new JLabel("<html><font color=blue>忘记密码?</font><html>"));
     p21.add(new JLabel("        "));
     
     p22.add(new JLabel("              "));
     p22.add(check1);
     p22.add(check2);
     p22.add(new JLabel("              "));
     p4.add(jl5);
this.add(p4,BorderLayout.NORTH);
     p22.add(buttonentryteacher);
     p22.add(new JLabel("                    "));
     p22.add(buttonentryadmin);
     p22.add(new JLabel("    "));
     p22.add(buttonreset);
     p2.add(p21);
     p2.add(p22);
     p2.setBounds(150,300, 200, 300);
    
     p2.setLayout(new GridLayout(2,1,10,10));
     p3.setSize(400,100);
     p3.add(new JLabel("<html><font color=#006600>建筑学院&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;兰志杰</font></html>"));//设置字体颜色
     setLayout(new BorderLayout());
     add(BorderLayout.NORTH,p4);
     add(BorderLayout.CENTER,p2);
     add(BorderLayout.SOUTH,p3);
     this.setTitle("腾讯QQ2010");
     buttonentryadmin.addActionListener(new ActionListener(){

   public void actionPerformed(ActionEvent e) {
  
    paword.getText();
    boolean flag =true;
   
    try {
     BufferedReader br=new BufferedReader( new FileReader
       ("e:/Sysresorce.txt"));
          String res=br.readLine();
   
      if(paword.getText().equals(res)){
      
       new truess(); 
       setVisible(false);
     
      }else{
      flag=false;
      }
     }
        catch (FileNotFoundException e1) {
    
     e1.printStackTrace();
    } catch (IOException e1) {
   
     e1.printStackTrace();
    }
   }
  
});
     check1.addActionListener(new ActionListener(){

   public void actionPerformed(ActionEvent e) {
    paword.setText("111");
    new truess(); 
    setVisible(false);
    } 
  
});
     buttonreset.addActionListener(new ActionListener(){

   public void actionPerformed(ActionEvent e) {
   
    username.setText("");
    paword.setText("");
   }
    
     });
     setVisible(true);
    
    addWindowListener(new WindowAdapter()
    {public void windowClosing(WindowEvent e)
         {System.exit(0);}
     });

     }

     
}
public class Mydenglu_interface
{

public static void main(String args[])
{
    Paii5 app=new Paii5(); 
    
  
}

}


//: 好友列表程序:

package Myjava_QQ;

import java.awt.*; 
import javax.swing.*; 
import javax.swing.tree.*; 
import java.awt.event.*; 
import javax.swing.event.*;

import Load_QQ.AboutQQ;
import My_make_QQ.tree;

public class truess extends JFrame 

JPanel cp=new JPanel(); 
JTree jtree; 
static DefaultMutableTreeNode root; 

public truess() 

   this.setTitle("QQ2010"); 
    cp=(JPanel)this.getContentPane(); 
    cp.setLayout(new BorderLayout()); 
   
    root=new DefaultMutableTreeNode("通讯录"); 
    createTree(root); 
    jtree=new JTree(root); 
    cp.add(jtree,BorderLayout.CENTER); 
    System.out.println("root     "+root.getUserObject());
    jtree.addTreeSelectionListener(new TreeSelectionListener() {
    public void valueChanged(TreeSelectionEvent e) {
     DefaultMutableTreeNode node = (DefaultMutableTreeNode) 
     jtree.getLastSelectedPathComponent();
     if (node == null)
      return;
     if (node.isLeaf()) {
    
      //Client s=new Client();
     new AboutQQ();
     } else {
     
    }}
   });

   this.setSize(200,500); 
   setVisible(true); 



private static void createTree (DefaultMutableTreeNode root) 

   DefaultMutableTreeNode classroom=null; 
   DefaultMutableTreeNode number=null; 
   DefaultMutableTreeNode frieds =null; 
   DefaultMutableTreeNode zhiji=null; 
   DefaultMutableTreeNode network=null;
   DefaultMutableTreeNode frinode =null; 
   DefaultMutableTreeNode zhijinode=null; 
   DefaultMutableTreeNode networknode=null;
   classroom=new DefaultMutableTreeNode("08计算机班"); 
   frieds=new DefaultMutableTreeNode("我的好友"); 
   zhiji=new DefaultMutableTreeNode("知己"); 
   network=new DefaultMutableTreeNode("网络友人"); 
   
   root.add(classroom); 
   root.add(frieds); 
   root.add(zhiji); 
   root.add(network); 
   String res[]={"兰志杰"," 张瑞","赵杰","冶志锋"};
   for(int i=1;i<=4;i++){
    frinode=new DefaultMutableTreeNode("NO"+String.valueOf(i));
    frieds.add(frinode);
   }
   for(int i=1;i<=4;i++){
    zhijinode=new DefaultMutableTreeNode("No."+String.valueOf(i)); 
    zhiji.add(zhijinode);
   }
   for(int i=1;i<=4;i++){
    networknode=new DefaultMutableTreeNode("No."+String.valueOf(i));
    network.add(networknode);
   }
   for(int i=1;i<3;i++) 
   { 
    number=new DefaultMutableTreeNode("No."+String.valueOf(i)); 

    if(i==4) 
    
   classroom.add(number); 
   } 


protected void processWindowEvent(WindowEvent e) 

   if(e.getID()==WindowEvent.WINDOW_CLOSING) 
   { 
    System.exit(0); 
   } 

}


//;会话程序;

package Load_QQ;


import java.net.*; 
import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.JDialog;

@SuppressWarnings("serial")
public class AboutQQ 
extends JFrame 
implements ActionListener,Runnable{ //定义qq界面所需的组件 
static JPanel p1 = new JPanel(), p2 = new JPanel(); 
TextArea output = new TextArea("", 20, 18, TextArea.SCROLLBARS_BOTH), 
input = new TextArea("", 20, 18, TextArea.SCROLLBARS_VERTICAL_ONLY); 
JButton b_biaoqing = new JButton("表情"); 
JButton b_zhiti = new JButton("字体"); 
JButton b_zhitiys = new JButton("字体颜色"); 
JButton b_jilu = new JButton("清空消息"); 
JButton b_fasong = new JButton("发送");

JLabel lb1 = new JLabel(" 对方IP"); 
JTextField IPAdd = new JTextField("192.168.4.88", 15); 
String s,kongzhi;//用于控制和判断的变量 
int port = 5858; 
InetAddress group = null; 
MulticastSocket socket = null; 
//群聊和私聊的线程 
Thread thread1=new Thread(this); 
Thread thread2=new Thread(this);

JButton siliao = new JButton("私聊"); 
JButton qunliao = new JButton("群聊"); 
Color ys = new Color(157, 242, 173); 
caidan cd = new caidan(); //获得菜单对象

public AboutQQ() { //布局qq界面 
super("小小聊天室"); 
setMenuBar(cd); 
setResizable(false); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
b_jilu.addActionListener(this); 
b_fasong.addActionListener(this); 
b_biaoqing.addActionListener(this); 
b_zhiti.addActionListener(this); 
b_zhitiys.addActionListener(this); 
siliao.addActionListener(this); 
qunliao.addActionListener(this);

Container cc = getContentPane(); 
setBounds(150, 150, 600, 510); 
cc.setLayout(new BorderLayout()); 
output.setBackground(Color.white); 
output.setForeground(Color.blue); 
output.setBounds(4, 0, 420, 250); 
output.setFont(new Font("楷体", Font.PLAIN, 14)); 
output.setEditable(false);

p1.setLayout(null); 
p1.setBackground(new Color(220, 220, 220)); 
p1.add(output); 
b_biaoqing.setBounds(4, 254, 60, 30); 
p1.add(b_biaoqing); 
b_zhiti.setBounds(65, 254, 60, 30); 
p1.add(b_zhiti); 
b_zhitiys.setBounds(126, 254, 90, 30); 
p1.add(b_zhitiys); 
input.setFont(new Font("楷体", Font.PLAIN, 14)); 
input.setBackground(Color.white); 
input.setForeground(Color.blue); 
input.setBounds(4, 290, 420, 125); 
p1.add(input); 
b_jilu.setBounds(4, 420, 120, 30); 
p1.add(b_jilu); 
b_fasong.setBounds(360, 420, 60, 30); 
p1.add(b_fasong); 
p1.setBackground(ys); 
cc.add(p1, "Center");

lb1.setFont(new Font("楷体", Font.BOLD, 18)); 
lb1.setBackground(ys); 
IPAdd.setEditable(false); 
p2.setBackground(ys); 
p2.setLayout(new GridLayout(10, 1, 1, 10)); 
p2.add(lb1, "Center"); 
p2.add(IPAdd); 
p2.add(siliao); 
p2.add(qunliao); 
cc.add(p2, "East"); 
setVisible(true); 
}

public void AboutQQ1() {
}

public AboutQQ(AboutQQ aboutQQ) {
// TODO Auto-generated constructor stub
}

//执行按钮动作的方法 
public void actionPerformed(ActionEvent e) { 
if (e.getSource() == b_fasong) { 
String ss = input.getText(); 
if (kongzhi == "sl"){ 
if (ss.equals("")) { 
AboutQQ test = new AboutQQ(this); 

else { 
sendData1(); 
}


else if (kongzhi == "ql") 
if (ss.equals("")) { 
AboutQQ test = new AboutQQ(this); 

else { 
sendData2(); 

else 

JOptionPane.showMessageDialog(this,"对不起!你还没选择聊天方式,请先选择聊天方式!","提醒",JOptionPane.WARNING_MESSAGE); 
}


else if (e.getSource() == b_zhiti) { 
ziti zt = new ziti(this); 
input.setFont(zt.f); 
output.setFont(zt.f); 

else if (e.getSource() == b_zhitiys) { 
Color newcolor = JColorChooser.showDialog(this, "调色板", 
input.getForeground()); 
input.setForeground(newcolor); 
output.setForeground(newcolor); 

else if (e.getSource() == b_jilu) { 
output.setText(""); 

else if (e.getSource() == siliao) { 
String ip = JOptionPane.showInputDialog("请输入对方的IP地址:","192.168.4.13"); 
if (ip!=null) { 
IPAdd.setText(ip); 

kongzhi="sl"; 
if(!(thread1.isAlive())){ 
thread1=new Thread(this); 

try{ 
thread1.start(); 
}catch(Exception eee){ 
}


else if (e.getSource() == qunliao){ 
thread1.interrupt(); 
int n=JOptionPane.showConfirmDialog(null,"你确定要群聊吗?你的消息会被所有人看到!!","警告",JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE); 
JOptionPane.showMessageDialog(this,"你最好先设置好你的昵称,然后再进行聊天!","温馨提醒",JOptionPane.WARNING_MESSAGE); 
if(n==JOptionPane.YES_OPTION) 
kongzhi="ql"; 
if(!(thread2.isAlive())){ 
thread2=new Thread(this); 
}

try{ 
thread2.start(); 
}catch(Exception eee){} 

}

//发送及接受数据的方法 
void sendData1(){ 
try { 
Calendar rightNow = Calendar.getInstance(); //获取当前系统日期和时间 
int hour = rightNow.get(Calendar.HOUR_OF_DAY); //获取当前时间的整点数 
int year = rightNow.get(Calendar.YEAR); 
int month = rightNow.get(Calendar.MONTH) + 1; 
int day = rightNow.get(Calendar.DATE); 
int minute = rightNow.get(Calendar.MINUTE); 
int second = rightNow.get(Calendar.SECOND);

String msg = input.getText(); 
if (msg.equals("")) { 
return; 

input.setText(""); 
String ad = IPAdd.getText(); 
InetAddress tea = InetAddress.getLocalHost(); 
String asd = tea.getHostAddress(); //发送方的IP地址 
output.append(cd.nicheng1 + "(" + asd + ") " + year 
+ "-" + month + "-" 
+ day + " " 
+ hour + ":" 
+ minute + ":" 
+ second + "\n" + " " + msg 
+ "\n"); 
msg = cd.nicheng2 + "(" + asd + ") " + year 
+ "-" + month + "-" 
+ day + " " 
+ hour + ":" 
+ minute + ":" 
+ second + "\n" + " " + msg + "\n"; 
InetAddress address = InetAddress.getByName(ad); 
byte[] message = msg.getBytes(); 
DatagramPacket packet = new DatagramPacket(message, message.length, 
address, 
9999); 
DatagramSocket socket = new DatagramSocket(); 
socket.send(packet); 

catch (Exception e) { 


void sendData2(){ 
Calendar rightNow = Calendar.getInstance(); //获取当前系统日期和时间 
int hour = rightNow.get(Calendar.HOUR_OF_DAY); //获取当前时间的整点数 
int year = rightNow.get(Calendar.YEAR); 
int month = rightNow.get(Calendar.MONTH) + 1; 
int day = rightNow.get(Calendar.DATE); 
int minute = rightNow.get(Calendar.MINUTE); 
int second = rightNow.get(Calendar.SECOND);

try { 
group = InetAddress.getByName("239.255.8.0"); 
socket = new MulticastSocket(port); 
socket.setTimeToLive(1); 
socket.joinGroup(group);

s = input.getText(); 
if (s.equals("")) { 
return; 

String ss=(cd.nicheng1+" " + year 
+ "-" + month + "-" 
+ day + " " 
+ hour + ":" 
+ minute + ":" 
+ second + "\n" + " " + s 
+ "\n");

input.setText(""); 
DatagramPacket packet = null; 
byte date[] = ss.getBytes(); 
packet = new DatagramPacket(date, date.length, group, port); 
socket.send(packet); 

catch (Exception e) { 
System.out.println("Error:" + e); 


//等待接受数据的方法 
public void run() { 
if(Thread.currentThread()==thread1){//负责私聊的线程 
try { 
byte[] buffer = new byte[1024]; 
DatagramPacket packet = new DatagramPacket(buffer, buffer.length); 
DatagramSocket socket = new DatagramSocket(9999); 
while (true) { 
socket.receive(packet); 
String s = new String(packet.getData(), 0, packet.getLength()); 
output.append(s + "\n"); 
packet = new DatagramPacket(buffer, buffer.length); 


catch (Exception e) { 


if(Thread.currentThread()==thread2){//负责群聊的线程

try { 
while (true) { 
group=null; 
group = InetAddress.getByName("239.255.8.0"); 
socket = new MulticastSocket(port); 
socket.joinGroup(group); 
byte[] buffer = new byte[8192]; 
DatagramPacket packet=null; 
packet = new DatagramPacket(buffer, buffer.length, group, port);

socket.receive(packet); 
String message = new String(packet.getData(), 0, packet.getLength()); 
output.append(message); 
packet = new DatagramPacket(buffer, buffer.length); 


catch (Exception e) { 


}

//主方法 
/*public static void main(String args[]) { 
new AboutQQ(null); 
}

}*/
//提示对话框类 
class LittleQQ 
implements ActionListener { 
private JLabel label; 
private JButton queding; 
private JDialog dialog;

public void AboutQQ(JFrame f) { 
label = new JLabel("不能发送空消息"); 
queding = new JButton("Yes"); 
dialog = new JDialog(f, "提示", true); 
dialog.setLocation(350, 380); 
dialog.setSize(80, 115); 
dialog.setResizable(false); 
Container dialogPane = dialog.getContentPane(); 
dialogPane.setLayout(new FlowLayout(FlowLayout.CENTER, 80, 15)); 
dialogPane.add(label); 
dialogPane.add(queding); 
queding.addActionListener(this); 
dialog.show(); 
}

public void actionPerformed(ActionEvent e) { 
dialog.show(false); 

}

//qq菜单类 
class caidan 
extends MenuBar 
implements ActionListener { 
String nicheng1 = "我"; //定义默认昵称 
String nicheng2 = "对方"; 
private Menu m1, m2, m3, m4, m5,m6; 
private MenuItem m11, m12, m13, m22, m23, m31, m51, m52, m53,m54, m55,m61,m62,m63,m64,m65,m66,m67,m68,m69,mm;

public caidan() { 
m1 = new Menu("聊天"); 
m2 = new Menu("娱乐"); 
m3 = new Menu("设置"); 
m4 = new Menu("工具"); 
m5 = new Menu("游戏"); 
m6=new Menu("背景颜色");

m11 = new MenuItem("短信聊天"); 
m12 = new MenuItem("视频聊天"); 
m13 = new MenuItem("文件传输");

m22 = new MenuItem("开心一刻"); 
m23 = new MenuItem("美景欣赏"); 
m51 = new MenuItem("贪吃蛇"); 
m52 = new MenuItem("拼图"); 
m53 = new MenuItem("围棋对弈"); 
m54 = new MenuItem("华容道"); 
m55 = new MenuItem("俄罗斯方块");

m31 = new MenuItem("我的昵称"); 
m61=new MenuItem("样式1"); 
m62=new MenuItem("样式2"); 
m63=new MenuItem("样式3"); 
m64=new MenuItem("样式4"); 
m65=new MenuItem("样式5"); 
m66=new MenuItem("样式6"); 
m67=new MenuItem("样式7"); 
m68=new MenuItem("样式8"); 
m69=new MenuItem("样式9"); 
mm=new MenuItem("默认");

m1.add(m11);m11.addActionListener(this); 
m1.add(m12);m12.addActionListener(this); 
m1.add(m13);m13.addActionListener(this); 
m2.add(m5); 
m2.add(m22);m22.addActionListener(this); 
m2.add(m23);m23.addActionListener(this); 
m5.add(m51);m51.addActionListener(this); 
m5.add(m52);m52.addActionListener(this); 
m5.add(m53);m53.addActionListener(this); 
m5.add(m54);m54.addActionListener(this); 
m5.add(m55);m55.addActionListener(this);

m3.add(m31);m31.addActionListener(this); 
m3.add(m6); 
m6.add(m61);m61.addActionListener(this); 
m6.add(m62);m62.addActionListener(this); 
m6.add(m63);m63.addActionListener(this); 
m6.add(m64);m64.addActionListener(this); 
m6.add(m65);m65.addActionListener(this); 
m6.add(m66);m66.addActionListener(this); 
m6.add(m67);m67.addActionListener(this); 
m6.add(m68);m68.addActionListener(this); 
m6.add(m69);m69.addActionListener(this); 
m6.add(mm);mm.addActionListener(this); 
add(m1); 
add(m2); 
add(m3); 
add(m4);

}

public void actionPerformed(ActionEvent e) { 
if (e.getSource() == m51) {


else if (e.getSource() == m52) {

}

else if (e.getSource() == m53) {


else if (e.getSource() == m54) {} 
else if (e.getSource() == m55) {


else if (e.getSource() == m22) {


else if (e.getSource() == m23) {


else if (e.getSource() == m31){ 
String nicheng = JOptionPane.showInputDialog("请输入你的昵称:"); 
nicheng1 = nicheng; 
nicheng2 = nicheng; 

else if(e.getSource() == m61){ 
Color ys=new Color(77,192,221); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys); 

else if(e.getSource() == m62){ 
Color ys=new Color(45,168,118); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys); 

else if(e.getSource() == m63){ 
Color ys=new Color(245,163,238); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys);


else if(e.getSource() == m64){ 
Color ys=new Color(148,157,55); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys);


else if(e.getSource() == m65){ 
Color ys=new Color(240,162,142); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys); 

else if(e.getSource() == m66){ 
Color ys=new Color(148,190,252); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys); 

else if(e.getSource() == m67){ 
Color ys=new Color(253,181,196); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys); 

else if(e.getSource() == m68){ 
Color ys=new Color(182,162,230); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys); 

else if(e.getSource() == m69){ 
Color ys=new Color(237,250,116); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys); 

else if(e.getSource() == mm){ 
Color ys=new Color(157,242,173); 
AboutQQ.p1.setBackground(ys); 
AboutQQ.p2.setBackground(ys); 
}

}

}

//字体对话框类 
class ziti 
implements ActionListener, ItemListener { 
private JLabel lb1 = new JLabel("字体"), lb2 = new JLabel("字形"), 
lb3 = new JLabel("大小"); 
JTextField text1 = new JTextField("楷体"), text2 = new JTextField("PLAIN"), 
text3 = new JTextField("14", 2); 
java.awt.List list1 = new java.awt.List(6, false), 
list2 = new java.awt.List(6, false), list3 = new java.awt.List(6, false); 
private JButton b_queding = new JButton("确定"), b_quxiao = new JButton("取消"); 
String zixing[] = { 
"常规", "斜体", "粗体"}; 
String daxiao[] = { 
"8", "9", "10", "11", "12", "14", "16", "18", "20", "22", "24", "26", 
"28", "34"}; 
private JDialog dialog; 
Font f; 
String aa = "楷体"; 
int cc = 14; 
//字体对话框类的构造方法 
public ziti(JFrame f) { 
dialog = new JDialog(f, "字体", true); 
dialog.setLocation(150, 150); 
dialog.setSize(400, 230); 
dialog.setResizable(false); 
Container dd = dialog.getContentPane(); 
dd.setLayout(null); 
lb1.setBounds(4, 2, 30, 20); 
dd.add(lb1); 
lb2.setBounds(150, 2, 30, 20); 
dd.add(lb2); 
lb3.setBounds(250, 2, 30, 20); 
dd.add(lb3); 
text1.setBounds(4, 24, 140, 20); 
dd.add(text1); 
text2.setBounds(150, 24, 95, 20); 
dd.add(text2); 
text3.setBounds(250, 24, 50, 20); 
dd.add(text3);

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
String fontName[] = ge.getAvailableFontFamilyNames(); 
for (int i = 0; i < fontName.length; i++) { 
list1.add(fontName[i]); 

for (int j = 0; j < zixing.length; j++) { 
list2.add(zixing[j]); 

for (int k = 0; k < daxiao.length; k++) { 
list3.add(daxiao[k]);

}

list1.setBounds(4, 46, 140, 130); 
dd.add(list1); 
list2.setBounds(150, 46, 95, 130); 
dd.add(list2); 
list3.setBounds(250, 46, 50, 130); 
dd.add(list3); 
b_queding.setBounds(315, 60, 60, 20); 
dd.add(b_queding); 
b_quxiao.setBounds(315, 100, 60, 20); 
dd.add(b_quxiao); 
b_queding.addActionListener(this); 
b_quxiao.addActionListener(this); 
list1.addItemListener(this); 
list2.addItemListener(this); 
list3.addItemListener(this); 
dialog.show();

}

//响应按钮事件的方法 
public void actionPerformed(ActionEvent e) { 
if (e.getSource() == b_queding) { 
aa = text1.getText(); 
cc = Integer.parseInt(text3.getText()); 
if (list2.getSelectedIndex() == 0) { 
f = new Font(aa, Font.PLAIN, cc); 

else if (list2.getSelectedIndex() == 1) { 
f = new Font(aa, Font.ITALIC, cc); 

else if (list2.getSelectedIndex() == 2) { 
f = new Font(aa, Font.BOLD, cc); 

else { 
f = new Font(aa, Font.PLAIN, cc); 

dialog.show(false);

}

else { 
dialog.show(false); 

}

//响应列表框事件的方法 
public void itemStateChanged(ItemEvent e) { 
String name1 = list1.getSelectedItem(); 
String name2 = list2.getSelectedItem(); 
String name3 = list3.getSelectedItem(); 
if (name1 != null) { 
text1.setText(name1); 

if (name2 != null) { 
text2.setText(name2); 

if (name3 != null) { 
text3.setText(name3); 

}

}
}

开发完毕,最后注意就是软件不要被反编译。

除了Java可以开发qq聊天界面,c#,Android都可以写qq聊天程序

end

转载于:https://my.oschina.net/bigfool007139/blog/513241

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eclipse中设计一个聊天室可以通过创建一个新的Java项目来实现。首先,需要设计客户端和服务器端,客户端负责用户与服务器之间的通信和交互,服务器端负责管理用户的连接和消息的转发。在Eclipse中可以分别创建两个Java类来实现客户端和服务器端的功能。 在客户端的Java类中,可以使用Swing或JavaFX来设计界面,包括聊天窗口和输入框,还可以通过Socket来实现与服务器的连接和数据传输。用户发送消息时,客户端将消息发送给服务器,并显示在聊天窗口中;同时接收服务器转发的其他用户的消息并显示在聊天窗口中。 在服务器端的Java类中,可以使用ServerSocket来监听客户端的连接请求,并开启一个新的线程来处理每个客户端的连接。服务器端需要实现消息的转发功能,将收到的消息发送给所有连接的客户端;还需要实现用户的管理,包括用户的注册、登录和退出。另外,服务器端还需要实现管理聊天室的功能,比如创建新的聊天室、将用户加入/退出聊天室等。 在Eclipse中设计聊天室也需要考虑并发和网络编程的相关知识,比如多线程、线程同步、Socket编程等。在设计过程中需要考虑用户界面的友好性和交互性,还需要考虑系统的稳定性和性能。通过良好的设计和编码实践,可以在Eclipse中成功设计一个功能完善的聊天室。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值