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

📄 clientgui.java

📁 一个初级的远程视频系统的代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                              public void windowClosing(WindowEvent event)
                              {
                            	messageManager.sendMessage("userName", "Disconnect");
                                messageManager.disconnect(messageListener);
                              }
                            });
					jVidCap.exit();
				}
			});
		}
		return jButton3;
	}

	

	/**
	 * This is the default constructor
	 */
	public ClientGUI(MessageManager manager) {
		super();
		userList = new Vector();
		initialize();
		messageManager = manager;
        messageListener = new MyMessageListener();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(742, 695);
		this.setLocation(150, 20);
		this.setResizable(false);
		this.setJMenuBar(getJJMenuBar());
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(7, 8, 147, 24));
			jLabel.setText("           在  线  列  表  ");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.setBackground(new Color(210, 225, 238));
			jContentPane.add(jLabel, null);
			jContentPane.add(getJPanel(), null);
			jContentPane.add(getJScrollPane1(), null);
			jContentPane.add(getJTextField(), null);
			jContentPane.add(getJButton(), null);
			jContentPane.add(getJButton1(), null);
			jContentPane.add(getJButton2(), null);
			jContentPane.add(getJButton3(), null);
			jContentPane.add(getJScrollPane(), null);
		}
		return jContentPane;
	}
	class user
	{
		  public String userName;
		  public String address;
		  public String sendPort;

		  user(){};
		  user(String session) {
			  StringTokenizer seTokenizer = new StringTokenizer(session,">");
			  userName = seTokenizer.nextToken();
			  address = seTokenizer.nextToken();
			  sendPort = seTokenizer.nextToken();
		  }
	}
    //////////为新消息提供监听并且在信息文本域输出信息
    private class MyMessageListener implements MessageListener{
      ////////当接收到时,在文本域输出新信息
  	public void sessionReceived(String session)
  	{
  		SwingUtilities.invokeLater(new opSession( session));
  	}
      public void messageReceived(String from,String message)
      {
        SwingUtilities.invokeLater(new MessageDisplayer(from,message));
      }
    public void VedioConnection(String session)
    {
    	SwingUtilities.invokeLater(new opVedioConnection(session));
    }
    }
    /////////
    private class opVedioConnection implements Runnable{
    	public String session;
    	
    	public opVedioConnection(String session)
    	{
    		this.session = session;
    	}
    	public void run()
    	{
    		
    		StringTokenizer ipTokenizer = new StringTokenizer(session,">");
    		int size = ipTokenizer.countTokens();
    		for(int i= 0;i<size-1;i++)
    			ipTokenizer.nextToken();
    		String reMorePort = ipTokenizer.nextToken();
    		System.err.println(reMorePort);
    		if(isJoin)
    		{
    			if(isFirst)
    			{

    				StringTokenizer morePortTokenizer = new StringTokenizer(reMorePort,"%");
    				int countUser = morePortTokenizer.countTokens();
    				for(int i=0;i<countUser;i++)
    				{
    					String ssss = morePortTokenizer.nextToken();

    	
    				    System.err.println("几次");
    					String []ipPortSession = new String[2];
    					ipPortSession[0] = muliAddress+"/" + ssss;
    					Integer integer = Integer.valueOf(ssss);
    			        int rePort2 = integer.intValue() + 2;
    			        ipPortSession[1] = muliAddress+"/" + new Integer(rePort2).toString();
    			        ReThread receiveMessage = new ReThread(countPanel,ipPortSession);
    		    	    receiveMessage.start();
    		    		countPanel++;
    		    		isFirst = false;
    		    		    
    					
    				}
    					
    			}
    			else
    			{
    				StringTokenizer findEndPortTokenizer = new StringTokenizer(reMorePort,"%");
    				int countEnd = findEndPortTokenizer.countTokens();
    				for(int i=0;i<countEnd-1;i++)
    					findEndPortTokenizer.nextToken();
    				String rePort = findEndPortTokenizer.nextToken();
    				String []ipPortSession0 = new String[2];
					ipPortSession0[0] = muliAddress+"/" + rePort;
					Integer integer = Integer.valueOf(rePort);
		            int rePort2 = integer.intValue() + 2;
		            ipPortSession0[1] = muliAddress+"/" + new Integer(rePort2).toString();
		            ReThread receiveMessage = new ReThread(countPanel,ipPortSession0);
	    			receiveMessage.start();
	    			countPanel++;
    			}
    			
    		}
    	}
  	  
    }
    private class MessageDisplayer implements Runnable{
      private String fromUser;
      private String messageBody;
      public MessageDisplayer(String from,String body)
      {
        fromUser = from;
        messageBody = body;
      }
      public void run()
      {
              jTextArea.append("\n"+fromUser+">"+messageBody);
              jTextArea.setCaretPosition(jTextArea.getText().length());
      }
    }
  
 
  private class opSession implements Runnable
  {
    private String s;
    opSession(String session)
    {
  	s = session;  
    }
    public void run()
    {
    	
    	StringTokenizer tokenizer = new StringTokenizer(s,">");
    	int count = tokenizer.countTokens();
    	
    	if(count == 3)
    	{
    		tokenizer.nextToken();
    		if(tokenizer.nextToken().equals(messageManager.getLocalAddress())&&userList.size() == 0)
    		{
    			user uu = new user();
    			uu.userName = userName;
    			
    			uu.address = messageManager.getLocalAddress();
    			
    			sendPort = port[0];
    			uu.sendPort = new Integer(port[0]).toString();
    			
    			userList.addElement(uu);
    		}
    		else
    		  System.err.println("服务器传递回来的字符串不是第一个用户的字符串!");
    	}
    	if(count > 3)
    	{
    		StringTokenizer token = new StringTokenizer(s,"$");
    		int t = token.countTokens();
    		if(userList.size() == 0)
    		{
    			int i=0;
    		for(;i<t;i++)
    		{
    			String us = token.nextToken();
    			StringTokenizer token0 = new StringTokenizer(us,">");
    			user uu0 = new user();
    			uu0.userName = token0.nextToken();
    			uu0.address = token0.nextToken();
    			uu0.sendPort = new Integer(port[i]).toString();
    			userList.addElement(uu0);
    		}
    		 i = t-1;
    		 sendPort = port[i];
    		 System.err.println("sendPort:"+sendPort);
    		}
    		else
    		{
    			int i = userList.size();
    			for(int m=0;m<i;m++)
    			{
    				token.nextToken();
    			}
    			for(;i<t;i++)
    			{
    				String usEnd = token.nextToken();
    				System.err.println(usEnd);
    				StringTokenizer token1 = new StringTokenizer(usEnd,">");
    				user uEnd = new user();
    				uEnd.userName = token1.nextToken();
    				uEnd.address = token1.nextToken();
    				uEnd.sendPort = new Integer(port[i]).toString();
    				System.err.println(port[i]);
    				userList.addElement(uEnd);
                }
    		}
    		
    	}
    	if(userList.size()>=2)
    		jButton2.setEnabled(true);
    	if(sendPort == port[0])
    		jButton2.setText("主持会议");
    	else
    		jButton2.setText("参加会议");
    	addUserList(userList);
    	
    }
  }
 
private void addUserList(Vector uList)
{
	int t = uList.size();
	String s = "\n";
	for(int i=0;i<t;i++)
	{
		user u = (user)uList.elementAt(i);
		s=s+u.userName+"\n";
	}
	jTextArea1.setText(s);
}

/**
 * This method initializes jScrollPane	
 * 	
 * @return javax.swing.JScrollPane	
 */
private JScrollPane getJScrollPane() {
	if (jScrollPane == null) {
		jScrollPane = new JScrollPane();
		jScrollPane.setBounds(new Rectangle(7, 33, 146, 467));
		jScrollPane.setViewportView(getJTextArea1());
	}
	return jScrollPane;
}

/**
 * This method initializes jTextArea1	
 * 	
 * @return javax.swing.JTextArea	
 */
private JTextArea getJTextArea1() {
	if (jTextArea1 == null) {
		jTextArea1 = new JTextArea();
	}
	return jTextArea1;
}
public class ReThread extends Thread
{
	    private int i;
	    private String [] sess = null;
	    public ReThread(int i,String []sess)
	    {
	    	this.i = i;
	    	this.sess = sess;
	    }
        public void run(){
                Receive receive= new Receive(sess);
                receive.initialize();
                Vector panels=receive.rtPanle();
                if(panels.size() == 2)
                {
                	   System.err.println("初始化图像");
                	    
                        JPanel j2 = (JPanel) panels.elementAt(1);
                        j2.setPreferredSize(new Dimension(160,120));
                        jPanelZu[i].add(j2,BorderLayout.CENTER);
                        JPanel j1 = (JPanel)panels.elementAt(0);
                	    j1.setPreferredSize(new Dimension(160,40));
                        jPanelZu[i].add(j1,BorderLayout.SOUTH);
                        
                        initialize();
                }
        }
}
}  //  @jve:decl-index=0:visual-constraint="-10,-22"

⌨️ 快捷键说明

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