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