JAVA聊天室问题紧急求助
小弟是菜鸟,正做一个java聊天室系统,现已经做到多人聊天了,但只能发文字,请问各路大虾们如何发送图片呢?用什么样的格式来承载图片呢?如TextArea等?还有发送表情、改变要发送的字体等等?
------解决方案--------------------帮顶
------解决方案--------------------up
------解决方案--------------------很难...
在.net中有RichTextBox作为容器来实现,其中的内容是rtf格式文本,保存其中内容可以很轻易的发现是文本和二进制代码混合出来的,写字板可读.
但在java中没有..尽管API中有提到rtf,但说明是尚未完成...当然,你可以挑战这个来实现...- -!
不过有个折中的办法,使用JEditorPane作为文本容器,它其中的文字可以使用HTML文档,也就可以改变文字...
头像可以存在于服务器上,利用<img>标签来引用
至于实时的图像,就比较麻烦了...你可以截获发送的字符串内容,解析出图像在客户端的路径,上传到服务器,生成地址,更改原字符串把图像引用插入其中
------解决方案--------------------////////////////////////////////////////////////////////////////////////根据所选择的字体类//型来显示
if (setType.cColor.getSelectedIndex()!=0)//对应字体颜色的选择
		    	{
		    		String[] colorCode={"#FFFFFF","#FF0000","#00FF00","#FFCC00","#0000FF"};
					int i=setType.cColor.getSelectedIndex();
					toMessage="<font color="+colorCode[i]+">"+toMessage+"</font>";
		    	}		   
		    if (setType.cSize.getSelectedIndex()!=0)//对应字体大小的选择
		    	{
		   	 		String h=String.valueOf(setType.cSize.getSelectedIndex());
		    		toMessage="<font size="+h+">"+toMessage+"</font>";
		    	}
		    if (setType.cModel.getSelectedIndex()!=0)//对应字体字型的选择
		    	{
		    		String h=String.valueOf(setType.cModel.getSelectedIndex());
		    		toMessage="<h"+h+">"+toMessage+"</h"+h+">";
		    	}
		    if (setType.chBoldface.isSelected())//字体的加粗
		    		toMessage="<b>"+toMessage+"</b>";
		    if (setType.chItalic.isSelected())
		    		toMessage="<i>"+toMessage+"</i>";
		    if (setType.chUnderline.isSelected())//字体的下划线
		    		toMessage="<u>"+toMessage+"</u>";
/////////////////////////////////////////////////////////////////////////////字体选择界面
class SetType extends JWindow implements ActionListener,ItemListener
  	{
  		JPanel p;
  		JLabel lFont;
  		JButton Chyanse;
  		JComboBox cType,cModel,cSize,cColor;
  		JCheckBox chBoldface,chItalic,chUnderline;
  		public SetType()
  		{p=new JPanel();
  			getContentPane().add(p);
  			setVisible(false);
  			setSize(500,35);
       	setLocation(400,620);
       	p.setBorder(BorderFactory.createLineBorder(Color.red,2));
	    	p.setBackground(Color.white);  			
  			lFont=new JLabel("字体:");			
			String[] sType={"宋体","楷体","隶书","仿宋体","黑体","幼圆","方正舒体","方正姚体"};	
			cType=new JComboBox(sType);
			String[] sColor={"字体色","红色","绿色","黄色","蓝色"};
			cColor=new JComboBox(sColor);	
			String[] sSize={"大小","一号","二号","三号","四号","五号","六号","七号"};
			cSize=new JComboBox(sSize);
			String[] sModel={"不强调","强调一","强调二","强调三","强调四","强调五","强调六"};
			cModel=new JComboBox(sModel);
			chBoldface=new JCheckBox("加粗");
			chBoldface.setFont(new Font("宋体",Font.BOLD,12));
			chBoldface.setOpaque(false);
			chItalic=new JCheckBox("倾斜");
			chItalic.setFont(new Font("宋体",Font.ITALIC,12));
			chItalic.setOpaque(false);
			chUnderline=new JCheckBox("<html><u>下划线</u>");