📄 clientgui.java
字号:
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 + -