小弟最近从网站WebSite上下了
![](/icons/87933yi.gif)
个JICQ 可是不知道如何回事
![](/icons/87933dou.gif)
编译时没有问题!!就是运行不了!!
请各位高手指教!!!
谢谢!!!!!!!!!!!!!!!
分New.java Server.java MainWin.java Register.java
1.//New.java如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public
![](/icons/87933class.gif)
New extends JFrame {//登录窗口类
JPanel contentPane;
//*****************
String server;//服务器名
![](/icons/87933int.gif)
serport;//端口
private Socket
![](/icons/87933socket.gif)
;
private BufferedReader in;//输入输出流
private Pr
![](/icons/87933int.gif)
Writer out;
//***********//
![](/icons/87933chengxu.gif)
界面
JPanel jPanel1 =
![](/icons/87933new.gif)
JPanel
![](/icons/87933kh.gif)
;
JLabel jLabel1 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JLabel jLabel2 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JTextField jicq =
![](/icons/87933new.gif)
JTextField
![](/icons/87933kh.gif)
;
JLabel jLabel3 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JPasswordField password =
![](/icons/87933new.gif)
JPasswordField
![](/icons/87933kh.gif)
;
JPanel jPanel2 =
![](/icons/87933new.gif)
JPanel
![](/icons/87933kh.gif)
;
JButton login =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JButton
![](/icons/87933new.gif)
user =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JButton quit =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JLabel jLabel6 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JTextField servername =
![](/icons/87933new.gif)
JTextField
![](/icons/87933kh.gif)
;
JLabel jLabel7 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JTextField serverport =
![](/icons/87933new.gif)
JTextField
![](/icons/87933kh.gif)
;
public New
![](/icons/87933kh.gif)
{
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try { jbInit
![](/icons/87933kh.gif)
;
server=servername.getText
![](/icons/87933kh.gif)
.toString
![](/icons/87933kh.gif)
.trim
![](/icons/87933kh.gif)
;
serport=Integer.parseInt(serverport.getText
![](/icons/87933kh.gif)
.trim
![](/icons/87933kh.gif)
);
} catch(Exception e) { e.pr
![](/icons/87933int.gif)
StackTrace
![](/icons/87933kh.gif)
; }
}
private void jbInit
![](/icons/87933kh.gif)
throws Exception {
contentPane = (JPanel) this.getContentPane
![](/icons/87933kh.gif)
;
contentPane.
![](/icons/87933set.gif)
Layout(null);
this.
![](/icons/87933set.gif)
Resizable(false);
this.
![](/icons/87933set.gif)
Size(
![](/icons/87933new.gif)
Dimension(344, 245));
this.
![](/icons/87933set.gif)
Title("New JICQ");
//contentPane.add(text, null);
jPanel1.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(2, 3, 348, 110));
jPanel1.
![](/icons/87933set.gif)
Layout(null);
jLabel1.
![](/icons/87933set.gif)
Text("请输入你
![](/icons/87933de.gif)
信息");
jLabel1.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(5, 7, 103, 18));
jLabel2.
![](/icons/87933set.gif)
Text("你
![](/icons/87933de.gif)
Jicq");
jLabel2.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(7, 66, 58, 18));
jicq.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(68, 65, 97, 22));
jLabel3.
![](/icons/87933set.gif)
Text("你
![](/icons/87933de.gif)
密码");
jLabel3.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(173, 66, 67, 18));
password.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(237, 63, 94, 22));
jPanel2.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(8, 154, 347, 151));
jPanel2.
![](/icons/87933set.gif)
Layout(null);
login.
![](/icons/87933set.gif)
Text("登录");
login.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(5, 27, 79, 29));
login.addMouseListener(
![](/icons/87933new.gif)
java.awt.event.MouseAdapter
![](/icons/87933kh.gif)
{
public void mouseClicked(MouseEvent e) {
login_mouseClicked(e);
}
});
![](/icons/87933new.gif)
user.
![](/icons/87933set.gif)
Text("新建");
![](/icons/87933new.gif)
user.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(118, 28, 79, 29));
![](/icons/87933new.gif)
user.addMouseListener(
![](/icons/87933new.gif)
java.awt.event.MouseAdapter
![](/icons/87933kh.gif)
{
public void mouseClicked(MouseEvent e) {
![](/icons/87933new.gif)
user_mouseClicked(e);
}
});
quit.
![](/icons/87933set.gif)
Text("退出");
quit.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(228, 26, 79, 29));
quit.addMouseListener(
![](/icons/87933new.gif)
java.awt.event.MouseAdapter
![](/icons/87933kh.gif)
{
public void mouseClicked(MouseEvent e) {
quit_mouseClicked(e);
}
});
jLabel6.
![](/icons/87933set.gif)
Text("服务器");
jLabel6.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(20, 132, 41, 18));
servername.
![](/icons/87933set.gif)
Text("hg");
servername.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(73, 135, 102, 22));
jLabel7.
![](/icons/87933set.gif)
Text("端口");
jLabel7.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(191, 137, 41, 18));
serverport.
![](/icons/87933set.gif)
Text("8080");
serverport.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(241, 131, 90, 30));
contentPane.add(jPanel1, null);
jPanel1.add(jLabel1, null);
jPanel1.add(jLabel2, null);
jPanel1.add(jicq, null);
jPanel1.add(jLabel3, null);
jPanel1.add(password, null);
contentPane.add(jPanel2, null);
jPanel2.add(login, null);
jPanel2.add(quit, null);
jPanel2.add(
![](/icons/87933new.gif)
user, null);
contentPane.add(jLabel6, null);
contentPane.add(servername, null);
contentPane.add(jLabel7, null);
contentPane.add(serverport, null);
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
![](/icons/87933if.gif)
(e.getID
![](/icons/87933dd.gif)
WindowEvent.WINDOW_CLOSING) {
![](/icons/87933System.gif)
.exit(0);
}
}
public
![](/icons/87933static.gif)
void
![](/icons/87933main.gif)
(String
![](/icons/87933zhk2.gif)
args) {//主
![](/icons/87933chengxu.gif)
New f=
![](/icons/87933new.gif)
New
![](/icons/87933kh.gif)
;
f.
![](/icons/87933set.gif)
Visible(true);
}
void login_mouseClicked(MouseEvent e) {//登录按扭
try{Socket
![](/icons/87933socket.gif)
=
![](/icons/87933new.gif)
Socket(InetAddress.getByName(server),serport);//连接服务器
BufferedReader in=
![](/icons/87933new.gif)
BufferedReader(
![](/icons/87933new.gif)
InputStreamReader(
![](/icons/87933socket.gif)
.getInputStream
![](/icons/87933kh.gif)
));
Pr
![](/icons/87933int.gif)
Writer out=
![](/icons/87933new.gif)
Pr
![](/icons/87933int.gif)
Writer(
![](/icons/87933new.gif)
BufferedWriter(
![](/icons/87933new.gif)
OutputStreamWriter(
![](/icons/87933socket.gif)
.getOutputStream
![](/icons/87933kh.gif)
)),true);
out.pr
![](/icons/87933int.gif)
ln("login");//告诉服务器我要登录
out.pr
![](/icons/87933int.gif)
ln(jicq.getText
![](/icons/87933kh.gif)
);
out.pr
![](/icons/87933int.gif)
ln(password.getPassword
![](/icons/87933kh.gif)
);
String str=" ";
//do{
str=in.readLine
![](/icons/87933kh.gif)
.trim
![](/icons/87933kh.gif)
;//从服务器读取消息
//如果失败就告诉出错
![](/icons/87933if.gif)
(str.equals("false")) JOptionPane.showMessageDialog(this,"对不起
![](/icons/87933dou.gif)
出错了:-(","ok",JOptionPane.INFORMATION_MESSAGE);
![](/icons/87933else.gif)
{//如果成功就打开主
![](/icons/87933chengxu.gif)
this.dispose
![](/icons/87933kh.gif)
;
![](/icons/87933int.gif)
g=Integer.parseInt(jicq.getText
![](/icons/87933kh.gif)
);
MainWin f2=
![](/icons/87933new.gif)
MainWin(g,server,serport);
f2.
![](/icons/87933set.gif)
Visible(true);
}
//
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln("\n");
//}while(!str.equals("ok"));
}catch(IOException e1){}
}
void
![](/icons/87933new.gif)
user_mouseClicked(MouseEvent e) {//新建用户按纽
this.dispose
![](/icons/87933kh.gif)
;
JDialog d=
![](/icons/87933new.gif)
Register(server,serport);//打开新建窗口
d.pack
![](/icons/87933kh.gif)
;
d.
![](/icons/87933set.gif)
LocationRelativeTo(this);
d.
![](/icons/87933set.gif)
Size(400,400);
d.show
![](/icons/87933kh.gif)
;
}
void quit_mouseClicked(MouseEvent e) {//关闭按扭
this.dispose
![](/icons/87933kh.gif)
;
![](/icons/87933System.gif)
.exit(0);
}
}
2.//Register.java如下
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import javax.swing.border.*;
public
![](/icons/87933class.gif)
Register extends JDialog {//新建用户类
//以下创建
![](/icons/87933chengxu.gif)
界面
JPanel panel1 =
![](/icons/87933new.gif)
JPanel
![](/icons/87933kh.gif)
;
JLabel jLabel1 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JTextField nickname =
![](/icons/87933new.gif)
JTextField
![](/icons/87933kh.gif)
;
JLabel jLabel2 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JLabel jLabel3 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JPasswordField password =
![](/icons/87933new.gif)
JPasswordField
![](/icons/87933kh.gif)
;
JLabel jLabel4 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JTextField email =
![](/icons/87933new.gif)
JTextField
![](/icons/87933kh.gif)
;
JLabel jLabel5 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JLabel jLabel6 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JTextPane info =
![](/icons/87933new.gif)
JTextPane
![](/icons/87933kh.gif)
;
JButton jButton1 =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JButton jButton2 =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JLabel jLabel7 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JRadioButton boy =
![](/icons/87933new.gif)
JRadioButton
![](/icons/87933kh.gif)
;
JRadioButton girl =
![](/icons/87933new.gif)
JRadioButton
![](/icons/87933kh.gif)
;
JLabel jLabel8 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JComboBox place =
![](/icons/87933new.gif)
JComboBox
![](/icons/87933kh.gif)
;
JComboBox headpic =
![](/icons/87933new.gif)
JComboBox
![](/icons/87933kh.gif)
;
//***************************
private String
![](/icons/87933zhk2.gif)
pics =
![](/icons/87933new.gif)
String
![](/icons/87933zhk2.gif)
{//头像
"1.jpg", "3.jpg",
"5.jpg", "7.jpg"};
String sername;//服务器名
![](/icons/87933int.gif)
serverport;//服务器端口
public Register(String s,
![](/icons/87933int.gif)
port) {//构造
![](/icons/87933hanshu.gif)
sername=s;
serverport=port;
try {
jbInit
![](/icons/87933kh.gif)
;//创建窗口
pack
![](/icons/87933kh.gif)
;
}
catch(Exception ex) {
ex.pr
![](/icons/87933int.gif)
StackTrace
![](/icons/87933kh.gif)
;}
//this(null, "", true);
}
void jbInit
![](/icons/87933kh.gif)
throws Exception {//创建窗口
panel1.
![](/icons/87933set.gif)
Layout(null);
this.getContentPane
![](/icons/87933kh.gif)
.
![](/icons/87933set.gif)
Layout(null);
panel1.
![](/icons/87933set.gif)
MaximumSize(
![](/icons/87933new.gif)
Dimension(200, 200));
panel1.
![](/icons/87933set.gif)
MinimumSize(
![](/icons/87933new.gif)
Dimension(200, 100));
panel1.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(-2, 0, 419, 452));
this.
![](/icons/87933set.gif)
Title("register");
jLabel1.
![](/icons/87933set.gif)
Text("昵称");
jLabel1.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(9, 45, 41, 18));
nickname.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(50, 44, 128, 22));
jLabel2.
![](/icons/87933set.gif)
Text("请填写以下内容");
jLabel2.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(9, 9, 103, 18));
jLabel3.
![](/icons/87933set.gif)
Text("密码");
jLabel3.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(200, 44, 41, 18));
password.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(247, 42, 100, 22));
jLabel4.
![](/icons/87933set.gif)
Text("电子邮件");
jLabel4.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(2, 102, 58, 18));
email.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(55, 96, 124, 22));
jLabel5.
![](/icons/87933set.gif)
Text("头像");
jLabel5.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(193, 96, 51, 18));
//***************
ComboBoxModel model =
![](/icons/87933new.gif)
HeadPicCombobox(pics);
ListCellRenderer renderer =
![](/icons/87933new.gif)
HeadpicCellRenderer
![](/icons/87933kh.gif)
;
jLabel6.
![](/icons/87933set.gif)
Text("个人资料");
jLabel6.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(6, 189, 87, 18));
info.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(5, 208, 363, 103));
jButton1.
![](/icons/87933set.gif)
Text("确定");
jButton1.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(147, 330, 79, 29));
jButton1.addMouseListener(
![](/icons/87933new.gif)
java.awt.event.MouseAdapter
![](/icons/87933kh.gif)
{
public void mouseClicked(MouseEvent e) {
jButton1_mouseClicked(e);
}
});
jButton2.
![](/icons/87933set.gif)
Text("取消");
jButton2.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(260, 329, 79, 29));
jLabel7.
![](/icons/87933set.gif)
Text("性别");
jLabel7.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(9, 156, 41, 18));
boy.
![](/icons/87933set.gif)
Text("男");
boy.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(43, 152, 38, 26));
girl.
![](/icons/87933set.gif)
Text("女");
girl.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(80, 152, 36, 26));
jLabel8.
![](/icons/87933set.gif)
Text("来自");
jLabel8.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(147, 154, 41, 18));
place.
![](/icons/87933set.gif)
ToolTipText("");
place.addItem(" 4川");
place.addItem("重庆");
place.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(181, 153, 163, 22));
headpic.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(249, 91, 71, 28));
headpic.
![](/icons/87933set.gif)
Model(model);
headpic.
![](/icons/87933set.gif)
Renderer(renderer);
this.getContentPane
![](/icons/87933kh.gif)
.add(jButton1, null);
this.getContentPane
![](/icons/87933kh.gif)
.add(panel1, null);
panel1.add(jLabel2, null);
panel1.add(jLabel1, null);
panel1.add(nickname, null);
panel1.add(jLabel3, null);
panel1.add(password, null);
panel1.add(jLabel4, null);
panel1.add(email, null);
panel1.add(jLabel5, null);
panel1.add(info, null);
panel1.add(jButton2, null);
panel1.add(jLabel6, null);
panel1.add(jLabel7, null);
panel1.add(boy, null);
panel1.add(jLabel8, null);
panel1.add(girl, null);
panel1.add(place, null);
panel1.add(headpic, null);
}
void jButton1_mouseClicked(MouseEvent e) {
try{
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln(sername);
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln(serverport);
Socket
![](/icons/87933socket.gif)
=
![](/icons/87933new.gif)
Socket(InetAddress.getByName(sername),serverport);//连接服务器
BufferedReader in=
![](/icons/87933new.gif)
BufferedReader(
![](/icons/87933new.gif)
InputStreamReader(
![](/icons/87933socket.gif)
.getInputStream
![](/icons/87933kh.gif)
));
Pr
![](/icons/87933int.gif)
Writer out=
![](/icons/87933new.gif)
Pr
![](/icons/87933int.gif)
Writer(
![](/icons/87933new.gif)
BufferedWriter(
![](/icons/87933new.gif)
OutputStreamWriter(
![](/icons/87933socket.gif)
.getOutputStream
![](/icons/87933kh.gif)
)),true);
out.pr
![](/icons/87933int.gif)
ln("
![](/icons/87933new.gif)
");//发送新建用户请求
out.pr
![](/icons/87933int.gif)
ln(nickname.getText
![](/icons/87933kh.gif)
.trim
![](/icons/87933kh.gif)
);//发送呢称等信息
out.pr
![](/icons/87933int.gif)
ln(password.getPassword
![](/icons/87933kh.gif)
);
out.pr
![](/icons/87933int.gif)
ln(email.getText
![](/icons/87933kh.gif)
.trim
![](/icons/87933kh.gif)
);
out.pr
![](/icons/87933int.gif)
ln(info.getText
![](/icons/87933kh.gif)
.trim
![](/icons/87933kh.gif)
);
out.pr
![](/icons/87933int.gif)
ln(place.getSelectedItem
![](/icons/87933kh.gif)
);
out.pr
![](/icons/87933int.gif)
ln(headpic.getSelectedIndex
![](/icons/87933kh.gif)
);//head picindex
![](/icons/87933int.gif)
no;
no=Integer.parseInt(in.readLine
![](/icons/87933kh.gif)
);
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
(no);
String str=" ";
//do{
str=in.readLine
![](/icons/87933kh.gif)
.trim
![](/icons/87933kh.gif)
;//从服务器读取信息
//如果出错
![](/icons/87933if.gif)
(str.equals("false")) JOptionPane.showMessageDialog(this,"对不起
![](/icons/87933dou.gif)
出错了:-(","ok",JOptionPane.INFORMATION_MESSAGE);
![](/icons/87933else.gif)
{//如果成功就告诉用户其号码
JOptionPane.showMessageDialog(this,"your javaicq#is"+no,"ok",JOptionPane.INFORMATION_MESSAGE);
this.dispose
![](/icons/87933kh.gif)
;//并打开主窗口
MainWin f2=
![](/icons/87933new.gif)
MainWin(no,sername,serverport);
f2.
![](/icons/87933set.gif)
Visible(true);}
//
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln("\n");
//}while(!str.equals("ok"));
//
![](/icons/87933socket.gif)
.close
![](/icons/87933kh.gif)
;
}catch(IOException e1){}
}
}
![](/icons/87933class.gif)
HeadPicCombobox extends DefaultComboBoxModel {//头象列表类
public HeadPicCombobox(String
![](/icons/87933zhk2.gif)
pics) {
for(
![](/icons/87933int.gif)
i=0; i < pics.length;
![](/icons/87933jiajia.gif)
i) {
addElement(
![](/icons/87933new.gif)
Object
![](/icons/87933zhk2.gif)
{
![](/icons/87933new.gif)
ImageIcon(pics[i]) } );
}
}
public Icon getIcon(Object object) {
Object
![](/icons/87933<img src=)
.gif' /> = (Object
![](/icons/87933zhk2.gif)
)object;
![](/icons/87933return.gif)
(Icon)
![](/icons/87933<img src=)
.gif' />[0];
}
}
![](/icons/87933class.gif)
HeadpicCellRenderer extends JLabel implements ListCellRenderer {
private Border
lineBorder = BorderFactory.createLineBorder(Color.red, 2),
emptyBorder = BorderFactory.createEmptyBorder(2,2,2,2);
public HeadpicCellRenderer
![](/icons/87933kh.gif)
{
![](/icons/87933set.gif)
Opaque(true);
}
public Component getListCellRendererComponent(JList list,Object value,
![](/icons/87933int.gif)
index,boolean isSelected,boolean cellHasFocus) {
HeadPicCombobox model =(HeadPicCombobox)list.getModel
![](/icons/87933kh.gif)
;
![](/icons/87933set.gif)
Icon(model.getIcon(value));
![](/icons/87933if.gif)
(isSelected) {
![](/icons/87933set.gif)
Foreground(list.getSelectionForeground
![](/icons/87933kh.gif)
);
![](/icons/87933set.gif)
Background(list.getSelectionBackground
![](/icons/87933kh.gif)
);
}
![](/icons/87933else.gif)
{
![](/icons/87933set.gif)
Foreground(list.getForeground
![](/icons/87933kh.gif)
);
![](/icons/87933set.gif)
Background(list.getBackground
![](/icons/87933kh.gif)
);
}
![](/icons/87933if.gif)
(cellHasFocus)
![](/icons/87933set.gif)
Border(lineBorder);
![](/icons/87933set.gif)
Border(emptyBorder);
![](/icons/87933return.gif)
this;
}
}
3.//MainWin.java如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.Vector;
import java.net.*;
import java.io.*;
![](/icons/87933class.gif)
FindFriend2 extends JFrame {//查找好友类
JLabel jLabel1 =
![](/icons/87933new.gif)
JLabel
![](/icons/87933kh.gif)
;
JButton find2 =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JButton jButton1 =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JButton jButton2 =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JButton jButton3 =
![](/icons/87933new.gif)
JButton
![](/icons/87933kh.gif)
;
JList list2;
///////////////////以下是好友
![](/icons/87933de.gif)
呢称
![](/icons/87933dou.gif)
性别等信息
Vector nickname=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector sex=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector place=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector jicq=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector ip=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector pic=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector status=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector emails=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector infos=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
//以下临时保存好友
![](/icons/87933de.gif)
呢称
![](/icons/87933dou.gif)
性别等信息
Vector tmpjicq=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;//jicqid
Vector tmpname=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;//jicqname
Vector tmpip=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;//ip
Vector tmppic=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;//pic info
Vector tmpstatus=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;//status
Vector tmpemail=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector tmpinfo=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
//以下创建网络相关变量
Socket
![](/icons/87933socket.gif)
;
BufferedReader in;
Pr
![](/icons/87933int.gif)
Writer out;
![](/icons/87933int.gif)
myid;
String serverhost;
![](/icons/87933int.gif)
servport;
DatagramPacket sendPacket;
DatagramSocket sendSocket;
![](/icons/87933int.gif)
sendPort=5000;
//////////////////
JPopupMenu findmenu =
![](/icons/87933new.gif)
JPopupMenu
![](/icons/87933kh.gif)
;
JMenuItem look =
![](/icons/87933new.gif)
JMenuItem
![](/icons/87933kh.gif)
;
JMenuItem add =
![](/icons/87933new.gif)
JMenuItem
![](/icons/87933kh.gif)
;
public FindFriend2(
![](/icons/87933int.gif)
whoami,String host,
![](/icons/87933int.gif)
port) {//查找好友类构造
![](/icons/87933hanshu.gif)
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
serverhost=host;
servport=port;
myid=whoami;
jbInit
![](/icons/87933kh.gif)
;
}
catch(Exception e) {
e.pr
![](/icons/87933int.gif)
StackTrace
![](/icons/87933kh.gif)
;
}//以下和服务器连接
try{
![](/icons/87933socket.gif)
=
![](/icons/87933new.gif)
Socket(InetAddress.getByName(serverhost),servport);
in=
![](/icons/87933new.gif)
BufferedReader(
![](/icons/87933new.gif)
InputStreamReader(
![](/icons/87933socket.gif)
.getInputStream
![](/icons/87933kh.gif)
));
out=
![](/icons/87933new.gif)
Pr
![](/icons/87933int.gif)
Writer(
![](/icons/87933new.gif)
BufferedWriter(
![](/icons/87933new.gif)
OutputStreamWriter(
![](/icons/87933socket.gif)
.getOutputStream
![](/icons/87933kh.gif)
)),true);
sendSocket=
![](/icons/87933new.gif)
DatagramSocket
![](/icons/87933kh.gif)
;
}catch(IOException e1){}
}
private void jbInit
![](/icons/87933kh.gif)
throws Exception {//以下是
![](/icons/87933chengxu.gif)
界面
jLabel1.
![](/icons/87933set.gif)
Text("下面是在线
![](/icons/87933de.gif)
朋友");
jLabel1.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(11, 11, 211, 18));
this.getContentPane
![](/icons/87933kh.gif)
.
![](/icons/87933set.gif)
Layout(
![](/icons/87933new.gif)
FlowLayout
![](/icons/87933kh.gif)
);
find2.
![](/icons/87933set.gif)
Text("查找");
find2.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(8, 289, 79, 29));
find2.addMouseListener(
![](/icons/87933new.gif)
java.awt.event.MouseAdapter
![](/icons/87933kh.gif)
{
public void mouseClicked(MouseEvent e) {
find2_mouseClicked(e);
}
});
jButton1.
![](/icons/87933set.gif)
Text("next");
jButton1.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(110, 288, 79, 29));
jButton2.
![](/icons/87933set.gif)
Text("up");
jButton2.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(211, 285, 79, 29));
jButton3.
![](/icons/87933set.gif)
Text("cancel");
jButton3.
![](/icons/87933set.gif)
Bounds(
![](/icons/87933new.gif)
Rectangle(317, 289, 79, 29));
// nickname=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
// sex=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
// place=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
ListModel model=
![](/icons/87933new.gif)
FindListModel(nickname,sex,place);//列表模型
ListCellRenderer renderer=
![](/icons/87933new.gif)
FindListCellRenderer
![](/icons/87933kh.gif)
;
list2=
![](/icons/87933new.gif)
JList(model);
list2.
![](/icons/87933set.gif)
Size(200,200);
list2.
![](/icons/87933set.gif)
Background(
![](/icons/87933new.gif)
Color(255, 255, 210));
list2.
![](/icons/87933set.gif)
AlignmentX((float) 1.0);
list2.
![](/icons/87933set.gif)
AlignmentY((float) 1.0);
list2.
![](/icons/87933set.gif)
CellRenderer(renderer);
list2.
![](/icons/87933set.gif)
VisibleRowCount(7);
list2.addMouseListener(
![](/icons/87933new.gif)
java.awt.event.MouseAdapter
![](/icons/87933kh.gif)
{
public void mousePressed(MouseEvent e) {
list2_mousePressed(e);
}
});
look.
![](/icons/87933set.gif)
Text("查看资料");
add.
![](/icons/87933set.gif)
Text("加为好友");
add.addMouseListener(
![](/icons/87933new.gif)
java.awt.event.MouseAdapter
![](/icons/87933kh.gif)
{
public void mousePressed(MouseEvent e) {
add_mousePressed(e);
}
});
this.getContentPane
![](/icons/87933kh.gif)
.add(jLabel1, null);
this.getContentPane
![](/icons/87933kh.gif)
.add(
![](/icons/87933new.gif)
JScrollPane(list2));
this.getContentPane
![](/icons/87933kh.gif)
.add(find2, null);
this.getContentPane
![](/icons/87933kh.gif)
.add(jButton1, null);
this.getContentPane
![](/icons/87933kh.gif)
.add(jButton2, null);
this.getContentPane
![](/icons/87933kh.gif)
.add(jButton3, null);
findmenu.add(look);
findmenu.add(add);
}//以下是关闭本窗口
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
![](/icons/87933if.gif)
(e.getID
![](/icons/87933dd.gif)
WindowEvent.WINDOW_CLOSING) {
//this.dispose
![](/icons/87933kh.gif)
;
this.hide
![](/icons/87933kh.gif)
;
}
}
//以下向服务器发送查找好友请求
void find2_mouseClicked(MouseEvent e) {
out.pr
![](/icons/87933int.gif)
ln("find");
DefaultListModel mm=(DefaultListModel)list2.getModel
![](/icons/87933kh.gif)
;
/////////////////find friend info
try{
String s=" ";
//从服务器读取好友信息
do{ s=in.readLine
![](/icons/87933kh.gif)
;
![](/icons/87933if.gif)
(s.equals("over"))
![](/icons/87933break.gif)
;
nickname.add(s);
sex.add(in.readLine
![](/icons/87933kh.gif)
);
place.add(in.readLine
![](/icons/87933kh.gif)
);
ip.add(in.readLine
![](/icons/87933kh.gif)
);
emails.add(in.readLine
![](/icons/87933kh.gif)
);
infos.add(in.readLine
![](/icons/87933kh.gif)
);
}while(!s.equals("over"));
/////////////end find info
//read their jicqno
![](/icons/87933int.gif)
theirjicq,picinfo,sta;
for(
![](/icons/87933int.gif)
x=0;x
;x
![](/icons/87933jiajia.gif)
){
theirjicq=Integer.parseInt(in.readLine
![](/icons/87933kh.gif)
);
//
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln(theirjicq);
jicq.add(
![](/icons/87933new.gif)
Integer(theirjicq));
picinfo=Integer.parseInt(in.readLine
![](/icons/87933kh.gif)
);
pic.add(
![](/icons/87933new.gif)
Integer(picinfo));
sta=Integer.parseInt(in.readLine
![](/icons/87933kh.gif)
);
//
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln(sta);
status.add(
![](/icons/87933new.gif)
Integer(sta));
//
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln(jicq.get(x));
}
//在列表中显示
for(
![](/icons/87933int.gif)
i=0;i
;i
![](/icons/87933jiajia.gif)
){
mm.addElement(
![](/icons/87933new.gif)
Object
![](/icons/87933zhk2.gif)
{nickname.get(i),sex.get(i),place.get(i)});
}//for
}catch(IOException e4){
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln("false");}
}
//显示查找好友菜单
void list2_mousePressed(MouseEvent e) {
findmenu.show(this,e.getX
![](/icons/87933kh.gif)
+20,e.getY
![](/icons/87933kh.gif)
+50);
}
/////////////add frined
//以下将添加
![](/icons/87933de.gif)
好友存储在临时矢量
void add_mousePressed(MouseEvent e) {
//add friend to database
![](/icons/87933int.gif)
dd;
dd=list2.getSelectedIndex
![](/icons/87933kh.gif)
;
tmpjicq.add(jicq.get(dd));
tmpname.add(nickname.get(dd));
tmpip.add(ip.get(dd));
tmppic.add(pic.get(dd));
tmpstatus.add(status.get(dd));
tmpemail.add(emails.get(dd));
tmpinfo.add(infos.get(dd));
//以下向服务器发送添加好友请求
out.pr
![](/icons/87933int.gif)
ln("addfriend");
out.pr
![](/icons/87933int.gif)
ln(jicq.get(dd));
out.pr
![](/icons/87933int.gif)
ln(myid);
try{ //以下告诉客户将其加为好友
String whoips;
String s="oneaddyou"+myid;
s.trim
![](/icons/87933kh.gif)
;
![](/icons/87933System.gif)
.out.pr
![](/icons/87933int.gif)
ln(s);
![](/icons/87933byte.gif)
![](/icons/87933zhk2.gif)
data=s.getBytes
![](/icons/87933kh.gif)
;
whoips=ip.get(dd).toString
![](/icons/87933kh.gif)
.trim
![](/icons/87933kh.gif)
;
sendPacket=
![](/icons/87933new.gif)
DatagramPacket(data,s.length
![](/icons/87933kh.gif)
,InetAddress.getByName(whoips),sendPort);
sendSocket.send(sendPacket);
} catch(IOException e2){e2.pr
![](/icons/87933int.gif)
StackTrace
![](/icons/87933kh.gif)
;}
//}catch(IOException df){};
}
/////////////add friend end
}
//以下扩展DefaultListModel类建立列表
![](/icons/87933class.gif)
FindListModel extends DefaultListModel
{ public FindListModel(Vector nickname,Vector sex,Vector place)
{ for(
![](/icons/87933int.gif)
i=0;i
;
![](/icons/87933jiajia.gif)
i){
addElement(
![](/icons/87933new.gif)
Object
![](/icons/87933zhk2.gif)
{nickname.get(i),sex.get(i),place.get(i)});
}
}
public String getName(Object object)
{ Object
![](/icons/87933<img src=)
.gif' />=(Object
![](/icons/87933zhk2.gif)
)object;
![](/icons/87933return.gif)
(String)
![](/icons/87933<img src=)
.gif' />[0];
}
public String getSex(Object object)
{ Object
![](/icons/87933<img src=)
.gif' />=(Object
![](/icons/87933zhk2.gif)
) object;
![](/icons/87933return.gif)
(String)
![](/icons/87933<img src=)
.gif' />[1];
}
public String getPlace(Object object)
{ Object
![](/icons/87933<img src=)
.gif' />=(Object
![](/icons/87933zhk2.gif)
)object;
![](/icons/87933return.gif)
(String)
![](/icons/87933<img src=)
.gif' />[2];
}
}
![](/icons/87933class.gif)
FindListCellRenderer extends JLabel implements ListCellRenderer//以下是处理列表渲染
{ private Border lineBorder=BorderFactory.createLineBorder(Color.red,2),
emptyBorder =BorderFactory.createEmptyBorder(2,2,2,2);
public FindListCellRenderer
![](/icons/87933kh.gif)
{
![](/icons/87933set.gif)
Opaque(true);
}
public Component getListCellRendererComponent(JList list,Object value,
![](/icons/87933int.gif)
index,
boolean isSelected,boolean cellHasFocus)
{ FindListModel model=(FindListModel) list.getModel
![](/icons/87933kh.gif)
;
![](/icons/87933set.gif)
Text(model.getName(value)+" "+model.getSex(value)+" "+model.getPlace(value));
![](/icons/87933if.gif)
(isSelected){
![](/icons/87933set.gif)
Foreground(list.getSelectionForeground
![](/icons/87933kh.gif)
);
![](/icons/87933set.gif)
Background(list.getSelectionBackground
![](/icons/87933kh.gif)
);
}
![](/icons/87933else.gif)
{
![](/icons/87933set.gif)
Foreground(list.getForeground
![](/icons/87933kh.gif)
);
![](/icons/87933set.gif)
Background(list.getBackground
![](/icons/87933kh.gif)
);}
![](/icons/87933if.gif)
(cellHasFocus)
![](/icons/87933set.gif)
Border(lineBorder);
![](/icons/87933set.gif)
Border(emptyBorder);
![](/icons/87933return.gif)
this;
}
}
//以下是主
![](/icons/87933chengxu.gif)
public
![](/icons/87933class.gif)
MainWin extends JFrame implements Runnable{
JPanel contentPane;
///////////////////////////friendinfo
//以下是好友基本信息变量
![](/icons/87933dou.gif)
比如呢称
![](/icons/87933dou.gif)
ip地址等
Vector friendnames=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
![](/icons/87933int.gif)
friendnum;//friend number
private String
![](/icons/87933zhk2.gif)
picsonline=
![](/icons/87933new.gif)
String
![](/icons/87933zhk2.gif)
{
"1.jpg","3.jpg","5.jpg","7.jpg"};
private String
![](/icons/87933zhk2.gif)
picsoffline=
![](/icons/87933new.gif)
String
![](/icons/87933zhk2.gif)
{
"2.jpg","4.jpg", "6.jpg","8.jpg"};
Vector friendjicq=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector udpport=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector friendips=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector friendemail=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector friendinfo=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector picno=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector status=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
// Vector pic=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
//以下是临时变量保存临时
![](/icons/87933de.gif)
好友
Vector tempname=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector tempjicq=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector tempip=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector temppic=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector tempstatus=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector whoaddmesip=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;//get whoaddme as friend
Vector tempemail=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
Vector tempinfo=
![](/icons/87933new.gif)
Vector
![](/icons/87933kh.gif)
;
![](/icons/87933int.gif)
index;//get list index
![](/icons/87933int.gif)
index3;//get firiend _disibledevent=Integer.parseInt(in.readLine
![](/icons/87933kh.gif)
);