⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jim.java

📁 照书上做的JIM软件,不过不知道为什么还不能运行.要是能调出来功能绝对完善
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
 	
 	//构造方法
 	public ShowFriendInfo(JimWin mainWin,Friend myFriend)
 	{
 		super(mainWin,"["+myFriend.fNickName+"]详细资料",true);
 		try
 		{
 			this.myFriend=myFriend;
 			showFriendInfoInit();   //初始化创建窗口
 			pack();
 			this.setSize(400,400);
 			this.setResizable(false);
 		}
 		catch(Exception ex)
 		{
 			ex.printStackTrace();
 		}
 	}
 	
 	
 	//初始化创建窗口
 	void showFriendInfoInit()throws Exception
 	{
 		String[] pics;
 		FilenameFilter fileFilter=new FilenameFilter(){
 			public boolean accept(File dir,String name){
 			if(name.endsWith("_1.JPG")||name.endsWith("_1.jpg")){
 				return true;
 			}
 			return false;
 		}
 	};
 	
 	File dir=new File("face");
 	pics=dir.list(fileFilter);
 	jpBottom.setLayout(null);
 	this.getContentPane().setLayout(null);
 	jpBottom.setBounds(new Rectangle(0,0,550,550));
 	jlNickName.setText("昵称");
 	jlNickName.setBounds(new Rectangle(36,40,45,20));
 	jtNickName.setText(myFriend.fNickName);
 	jtNickName.setBounds(new Rectangle(70,40,180,22));
 	jlImNo.setText("JIM号");
 	jlImNo.setBounds(new Rectangle(27,70,45,20));	
 	jtfImNo.setText(Integer.toString(myFriend.fImNo));
 	jtfImNo.setBounds(new Rectangle(70,70,180,22));			
    ComboBoxModel model=new HeadPicCombobox(pics);
    ListCellRenderer renderer=new HeadpicCellRenderer();
    jcbFace.setBounds(new Rectangle(290,40,80,50));
    jcbFace.setModel(model);
    jcbFace.setRenderer(renderer);
    jcbFace.setSelectedIndex(myFriend.fFace-1);
    jlSex.setText("性别");
    jlSex.setBounds(new Rectangle(36,100,45,20));
    jcbSex.setToolTipText("");
    jcbSex.addItem("女");	
    jcbSex.addItem("男");
    jcbSex.setBounds(new Rectangle(70,100,45,22)); 
    jcbSex.setSelectedIndex(myFriend.fSex);  
    jlAge.setText("年龄");   
    jlAge.setBounds(new Rectangle(135,100,50,20)); 
    jtfAge.setBounds(new Rectangle(170,100,40,22)); 
    jtfAge.setText(Integer.toString(myFriend.fAge));
    jlPhone.setText("电话"); 
    jlPhone.setBounds(new Rectangle(225,100,50,20));    
    jtfPhone.setBounds(new Rectangle(260,100,110,22)); 
    jtfPhone.setText(myFriend.fPhone);
    jlEMail.setText("电子邮件");
    jlEMail.setBounds(new Rectangle(10,130,60,20)); 
    jtfEMail.setBounds(new Rectangle(70,130,300,22));    
    jtfEMail.setText(myFriend.fEMail);
    jlHomePage.setText("个人主页");
    jlHomePage.setBounds(new Rectangle(10,160,60,20));
    jtfHomePage.setBounds(new Rectangle(70,160,300,22));
    jtfHomePage.setText(myFriend.fHomePage);
    jlResume.setText("个人说明");
    jlResume.setBounds(new Rectangle(10,190,60,20));
    jtpResume.setBounds(new Rectangle(70,190,300,110));
    jtpResume.setText(myFriend.fResume);
    jbOK.setText("确定");
    jbOK.setBounds(new Rectangle(147,330,79,29));
    jbOK.addMouseListener(new java.awt.event.MouseAdapter(){
  	    public void mouseClicked(MouseEvent e){
  		   jbOK_mouseClicked(e);
  	}
  });
  this.getContentPane().add(jpBottom,null);
  jpBottom.add(jlNickName,null);
  jpBottom.add(jtNickName,null);
  jpBottom.add(jlImNo,null);
  jpBottom.add(jtfImNo,null);
  jpBottom.add(jcbFace,null);
  jpBottom.add(jlSex,null);
  jpBottom.add(jcbSex,null);
  jpBottom.add(jlAge,null);
  jpBottom.add(jtfAge,null);
  jpBottom.add(jlPhone,null);
  jpBottom.add(jtfPhone,null);
  jpBottom.add(jtfEMail,null);
  jpBottom.add(jlEMail,null);
  jpBottom.add(jlHomePage,null);
  jpBottom.add(jtfHomePage,null);
  jpBottom.add(jlResume,null);
  jpBottom.add(jtpResume,null);
  jpBottom.add(jbOK,null);
}
void jbOK_mouseClicked(MouseEvent e)
{
	this.dispose();
  }
}


//AddFriend类
//该类为显示并处理增加好友类。代码入下:
class AddFriend extends JDialog
{
	int friendImNo;            //好友的JIM号
	JimWin mainWin;           //JIM界面
	JLabel jlFriendImNo;      //标签
	JTextField jtfFriendImNo;  //输入好友JIM号的文本框
	JButton btnOK;             //"确认"按钮
	
	//构造方法
	public AddFriend(JimWin mainWin,int friendImNo)
	{
		super(mianWin,"添加好友",true);
		this.friendImNo=friendImNo;
		this.mainWin=mainWin;
		
		//若构造方法的参数中friendImNo参数<0表示需要GUI
		if(friendImNo<0)
		{
			this.getContentPane().setLayout(null);
			jlFriendImNo=new JLabel();
			jlFriendImNo.setText("JIM号码");
			jtfFriendImNo=new JTextField();
			btnOK=new JButton();
			btnOK.setText("加为好友");
		    jlFriendImNo.setBounds(new Rectangle(30,15,90,20));
		    jtfFriendImNo.setBounds(new Rectangle(30,40,200,22));
		    btnOK.setBounds(new Rectangle(80,80,100,30));
		    btnOK.addMouseListener(new java.awt.event.MouseAdapter(){
		  	      public void mouseClicked(MouseEvent e){
		  		    btnOK_mouseClicked(e);
		  	}
		  });
		this.getContentPane().add(jlFriendImNo,null);
		this.getContentPane().add(jtfFriendImNo,null);
	    this.getContentPane().add(btnOK,null);
	    this.setSize(260,160);
	    this.setResizable(false);
		}
	}
	
	void btnOK_mouseClicked(MouseEvent e)
	{
		try
		{
			//取得输入的好友JIM号
			friendImNo=Integer.parseInt(jtfFriendImNo.getText().trim());
			String rtn=processAddFriend();
			if(!rtn.equals("OK"))
			    JOptionPane.showMessageDialog(this,rtn,"提示信息",JOptionPane.INFORMATION_MESSAGE);
			else
			    jtfFriendImNo.setText("");
		}
		catch(Exception e1)
		{
			e1.printStackTrace();
		}
	}
	
	//增加好友的操作
	public String processAddFriend()
	{
		Socket socket;
		BufferedReader in;
		PrintWriter out;
		String rtn="OK";         //默认返回值
		try 
		{
			socket=new Socket(InetAddress.getByName(mainWin.serverName),mainWin.serverPort);
			in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
		    out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
		  try
		  {
		  	//向服务器端增加好友请求
		  	out.println("ADDNEWFRIEND");
		  	out.println(friendImNo);          //好友JIM号
		  	out.println(mianWin.myImNo);      //用户自己的JIM号
		  	
		  	
		  //以下将从服务器端读取返回的好友详细信息	
		  	String
		  	fNickName,fImNo,fFace="",fSex,fAge,fIp,fRPort,fOnline="",fEMail,fHomePage,fPhone,fResume;
		  	do
		  	{
		  		fNickName=in.readLine();
		  		if(fNickName.equals("OVER")||fNickName.equals("FALSE"))break;
		  		fImNo=in.readLine();
		  		fFace=in.readLine();
		  		fSex=in.readLine();
		  		fAge=in.readLine();
		  		fIp=in.readLine();
		  		fRPort=in.readLine();
		  		fOnline=in.readLine();
		  		fEMail=in.readLine();
		  		fHomePage=in.readLine();
		  		fPhone=in.readLine();
		  		fResume=in.readLine();
		  		//将好友添加到好友列表中
		  		mainWin.myFriends.add(new Friend(fNickName,fIp,fEMail,fHomePage,fPhone,fResume,Integer.parseInt(fImNo),
		  		Integer.parseInt(fRPort),Integer.parseInt(fFace),Integer.parseInt(fSex),Integer.parseInt(fAge),Integer.parseInt(fOnline)));
		  	}while(!fNickName.equals("OVER"));
		  	
		  	//告诉服务器通讯结束
		  	out.println("END");
		  	if(!fNickName.equals("FALSE"))
		  	{
		  		//若服务器端增加好友操作正常,则将好友添加到JIM界面的好友列表框中
		  		int fIndex=mainWin.myFriends.size()-1;
		  		DefaultListModel dlm=(DefaultListModel)mainWin.jlstFriend.getModel();
		  		if(Integer.parseInt(fOnline)==1)
		  		  dlm.addElement(new Object[]{((Friend)mainWin.myFriends.get(fIndex)).fNickName,new ImageIcon("face/"+mainWin.faceOnline[Integer.parseInt(fFace)-1])});
		  	
		     	else
		  	
		  	     dlm.addElement(new Object[]{((Friend)mainWin.myFriends.get(fIndex)).fNickName,new ImageIcon("face/"+mainWin.faceOffline[Integer.parseInt(fFace)-1])});
		  	     }
		  	     else
		  	     {
		  	  //若服务器端增加好友操作错误,则读取服务器返回信息  
		  	
		  		rtn=in.readLine();
		  	}
		  }
		  catch(IOException e1)
		  {
		  	rtn="加入好友时出错!";
		  }
		  finally
		  {
		  	socket.close();
		  	return rtn;
		  }
		}
		catch(Exception ee)
		{
			rtn="初始化网络套接字出错!";
		}
		finally
		{
			return rtn;   //返回提示信息
		}
	}
}

//显示图像的下拉列表框的模型
class HeadPicCombobox extends DefaultComboBoxModel
{
	//构造方法。将图像文件作为图标加载到列表中
	public HeadPicCombobox(String[] pics){
		for(int i=0;i<pics.length; ++i){
			addElement(new Object[]{new ImageIcon("face/"+pics[i])});
		}
	}
	//返回指定对象的图标
	public Icon getIcon(Object object){
		
		Object[] Array=(Object[])object;
		return(Icon)array[0];
	}
}

//显示图像的下拉列表框的绘制器
class HeadpicCellRenderer extends JLabel implements ListCellRenderer
{
	//定义两种边框线
	private Border
	  lineBorder=BorderFactory.createLineBorder(Color.red,2),
	  emptyBorder=BorderFactory.createEmptyBorder(2,2,2,2);
	  //构造方法
	  public HeadpicCellRenderer()
	  {
	  	setOpaque(true);   //使得标签的背景被绘制
	  }
	  
//在绘制JList的每个Cell之前,都会调用getListCellRendererComponent(),得到一个Component,
//并将这个Component绘制在正确的位置。
//getListCellRendererComponent()给出如何绘制Component
public Component getListCellRendererComponent(JList List,
          Object value,int index,boolean isSelected,boolean cellHasFocus)
{
	HeadPicCombobox model=(HeadPicCombobox)list.getModel();
	setIcon(model.getIcon(value));
	if(isSelected){
		setForeground(list.getSelectionForeground());
		setBackground(list.getSelectionBackground());
	}
	else{
		setForeground(list.getForeground());
		setBackground(list.getBackground());
	}
	
	if(cellHasFocus)setBorder(lineBorder);
	else               setBorder(emptyBorder);
	
	return this;
}
}

//以下继承DefaultListModel类以创建好友列表
class NameAndPicListModel extends DefaultListModel
{
	public NameAndPicListModel(Vector myFriends,String[] pics)
	{
		for(int i=0;i<myFriends.size();++i)
		{
			addElement(new Object[]{((Friend)myFriends.get(i)).fNickName,new ImageIcon("face/"+pics[i])});
		}
	}
	
	public String getName(Object object)
	{
		Object[] Array=(Object[]) object;
		return(String) aray[0];
	}
  public Icon getIcon(Object object)
	{
		Object[] array=(Object[]) object;
		return(Icon) aray[1];
	} 
}


class NameAndPicListCellRenderer extends JLabel implements ListCellRenderer
{
	private  Border lineBorder=BorderFactory.createLineBorder(Color.red,2),
	emptyBorder=BorderFactory.createEmptyBorder(2,2,2,2);
	public NameAndPicListCellRenderer()
	{
		setOpaque(true);
	}
	public Component getListCellRendererComponent(JList list,Object value,
	       int index,boolean isSelected,boolean cellHasFocus)
	{
		NameAndPicListModel model=(NameAndPicListModel)list.getModel();
		setText(model.getName(value));
		setIcon(model.getIcon(value));
		if(isSelected)
		{
			setForeground(List.getSelectionForeground());
			setBackground(List.getSelectionBackground());
		}
		else
		{
			setForeground(list.getForeground());
			setBackground(list.getBackground());
		}
		if(cellHasFocus)  setBorder(lineBorder);
		else setBorder(emptyBorder);
		return this;
	}

}

  
  
  
        
 		  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -