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

📄 clientrecievemsg.java

📁 简易聊天工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	        int recieveColorBlue = Integer.parseInt(st.nextToken());	
	        String recieveText = null;
	        recieveText = st.nextToken();
	        recieveText = changeMsg(recieveText);
	        Style style = parent.recordDoc.getStyle("bobo");
			parent.recordDoc.insertString(parent.recordDoc.getLength(), recievesendName, style);
			style = parent.recordDoc.getStyle("zhuzhu");
			if(f.equals("public")) parent.recordDoc.insertString(parent.recordDoc.getLength(), "  对  ", style);
			else parent.recordDoc.insertString(parent.recordDoc.getLength(), "  秘密地对  ", style);
			style = parent.recordDoc.getStyle("bobo");
			parent.recordDoc.insertString(parent.recordDoc.getLength(), recievetoName, style);
			style = parent.recordDoc.getStyle("zhuzhu");
			parent.recordDoc.insertString(parent.recordDoc.getLength(), "  说:  ", style);
			parent.recordDoc.insertString(parent.recordDoc.getLength(), 
									"  (" + recieveyear + "年" + recievemonth + "月" + recieveday + "日" 
									+ recievehour + ":" + recievetime + ")" 
									+ '\n', style);
	        			
	       	Color hisColor = new Color(recieveColorRed, recieveColorGreen, recieveColorBlue);
	        Style hisStyle = this.setStyle(new Font(recieveFont, Font.BOLD, recieveFontSize), hisColor);
            parent.recordDoc.insertString(parent.recordDoc.getLength(), recieveText + '\n', hisStyle);	
        }
        catch(Exception e){e.printStackTrace();}
	}
	private Style setStyle(Font f, Color fontColor)
   	{
   		Style style = parent.recordDoc.getStyle("haha");
   		StyleConstants.setBold(style, false);
   		StyleConstants.setItalic(style, false);
        StyleConstants.setFontFamily(style, f.getFamily());      
        StyleConstants.setFontSize(style, f.getSize());    
        StyleConstants.setForeground(style, fontColor);
        return style;
   	}
	String changeMsg(String msg)
	{
		int n = msg.indexOf('/');
		String s = "";
		while(n >= 0)
		{
			if(n == 0) s += '\n';
			else
			{
				s += msg.substring(0, n - 1) + '\n';
				msg = msg.substring(n + 1);	
				n = msg.indexOf('/');		
			}
		}
		s += msg;
		System.out.println(s);
		return s;	
	}
	public void startTransmit(String[] ips)
	{
		DataSource ds = null;
		try
		{
			DataSource[] dataSources = new DataSource[2];
			if(parent.audioDevice != null && parent.videoDevice != null)
			{
        		dataSources[0] = Manager.createDataSource(parent.audioDevice.getLocator());
        		dataSources[1] = Manager.createDataSource(parent.videoDevice.getLocator());
        		ds = Manager.createMergingDataSource(dataSources);
        	}
        	else if(parent.audioDevice != null) 
        	{
        		ds = Manager.createDataSource(parent.audioDevice.getLocator());
        	}
        	else if(parent.videoDevice != null)
        	{
        		ds = Manager.createDataSource(parent.videoDevice.getLocator());	
        	}
        }catch(IOException ioe){ioe.printStackTrace();}
        catch(NoDataSourceException e){e.printStackTrace();}
        catch(IncompatibleSourceException e){e.printStackTrace();}
        if(ds == null) 
        {
        	System.out.println("没有数据源!");
        	return;
        }
        AudioFormat audioFormat = parent.audioFormat;
		VideoFormat videoFormat = parent.videoFormat;
		String port = null;
		for(int i = 0; i < ips.length; i++)
		{
			port = getMyPort();
			DataTransmit dtTransmit = new DataTransmit(ds, ips[i], port, audioFormat, videoFormat);	
			String result = dtTransmit.start();
			if(result != null) 
			{
				System.out.println("传输数据初始化失败!" + result);
				try
				{
					parent.recordDoc.insertString(parent.recordDoc.getLength(), "连接失败!" + '\n', null);	
				}catch(Exception e){}		
			}
		}
	}
	public String getMyPort()
	{
		String port = "";
		for(int h = 0; h < parent.ChatFriends.size(); h++)
		{
		    People p = (People)parent.ChatFriends.get(h);
		    if(p.name.equals(this.name)) 
		    {
		    	port = (1000 * h + 1000) + "";
		    	return port;	
		    }	
		}
		return port;	
	}
	public void startReceive(int peopleCount, String[] sessions)
	{
		int grid = peopleCount;
		double x = Math.sqrt(grid);
		if(x % 1 == 0) grid = (int)x;
		else grid = (int)(x + 1);
		DataReceive dtReceive = new DataReceive(sessions);
		String result = dtReceive.initialize(grid, grid);
		if(result != "success") 
		{
			System.out.println("接收数据初始化失败!" + result);
			try
			{
				parent.recordDoc.insertString(parent.recordDoc.getLength(), "连接失败!" + '\n', null);	
			}catch(Exception e){}		
		}
	}
	public String getOtherPort(String name)
	{
		for(int i = 0; i < parent.ChatFriends.size(); i++)
		{
			People p = (People)parent.ChatFriends.get(i);
			if(p.name.equals(name)) 
			{
				return (1000 * i + 1000) + "";	
			}	
		}
		return "";	
	}
}
class SCFrame extends JFrame
{
	ClientRecieveMsg parent = null;
	String flag = null;
	JButton accept;
	JButton cancel;
	JLabel showMsg;
	String applicant;
	public SCFrame(ClientRecieveMsg p, String f, String app)
	{
		parent = p;
		flag = f;
		this.applicant = app;
		accept = new JButton("接受");
		accept.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				setVisible(false);
				if(flag.equals("NETMEETING_CONNECT"))
				{
					parent.parent.sendMsg("NETMEETING_CONNECT_REVERT:" + "accept");
				}
				else if(flag.equals("AUDIOCHAT_CONNECT"))
				{
					parent.parent.sendMsg("AUDIOCHAT_CONNECT_REVERT:" + applicant + ":" + "accept");	
					String[] IPs = new String[1];
		    		IPs[0] = parent.parent.findIP((String)parent.parent.sendTo.getSelectedItem());
		    		String[] sessions = new String[1];
		    		sessions[0] = IPs[0] + "/" + parent.getOtherPort(applicant);
		    		parent.startTransmit(IPs);
		    		parent.startReceive(1, sessions);
				}
				else
				{
					parent.parent.sendMsg("VIDEOCHAT_CONNECT_REVERT:" + applicant + ":" + "accept");	
					String[] IPs = new String[1];
		    		IPs[0] = parent.parent.findIP((String)parent.parent.sendTo.getSelectedItem());
		    		String[] sessions = new String[1];
		    		sessions[0] = IPs[0] + "/" + parent.getOtherPort(applicant);
		    		parent.startTransmit(IPs);
		    		parent.startReceive(1, sessions);
				}	
			}	
		});
		cancel = new JButton("拒绝");
		cancel.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				if(flag.equals("NETMEETING_CONNECT"))
				{
					parent.parent.sendMsg("NETMEETING_CONNECT_REVERT:" + "refuse");
				}
				else if(flag.equals("AUDIOCHAT_CONNECT"))
				{
					parent.parent.sendMsg("AUDIOCHAT_CONNECT_REVERT:" + applicant + ":" + "refuse");	
				}
				else
				{
					parent.parent.sendMsg("VIDEOCHAT_CONNECT_REVERT:" + applicant + ":" + "refuse");	
				}
				setVisible(false);	
			}		
		});	
		showMsg = new JLabel();
		if(flag.equals("NETMEETING_CONNECT"))
		{
			showMsg.setText(applicant + "请求你加入聊天室!");	
		}
		else if(flag.equals("AUDIOCHAT_CONNECT"))
		{
			showMsg.setText(applicant + "请求与你语音聊天!");	
		}
		else
		{
			showMsg.setText(applicant + "请求与你视频聊天!");	
		}
		showMsg.setBounds(new Rectangle(40, 20, 150, 20));
		accept.setBounds(new Rectangle(40, 80, 60, 20));
		cancel.setBounds(new Rectangle(140, 80, 60, 20));
		Container cp = getContentPane();
		cp.setLayout(null);
		cp.add(showMsg, null);
		cp.add(accept, null);
		cp.add(cancel, null);
		setTitle("系统消息");
		setSize(230, 150);
		this.setLocationRelativeTo(parent.parent);
		setVisible(true);
	}	
}
class People
{
	String name;
	String IP;
	public People(String n, String i)
	{
		name = n;
		IP = i;	
	}	
}

⌨️ 快捷键说明

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