📄 serverframe.java
字号:
package group.server;
import java.awt.*;
import java.io.*;
import javax.swing.*;
import java.util.*;
import group.Customer;
import group.MesPanel;
import group.Message;
/**
<code>ServerFrame</code>此类为服务器端主窗口类,主要负责界面元素的安排
@author wls
*/
public class ServerFrame extends JFrame
{
private MesPanel mesPane; //用于显示消息的面板,MesPanel继承自JPanel
private MesPanel frendPane; //用于显示朋友列表的面板
private PrintWriter mesOut; //用于将聊天记录保存起来
private String[] mesStr = new String[30]; //用于容纳消息的数组
private ArrayList frendList = new ArrayList(); //用于容纳所有在线的好友的ArrayList
private final int WIDTH = 700; //定义窗口的宽度
private final int HEIGHT = 488; //定义窗口的高度
/**
ServerFrame类的构造函数,用于安排界面和初始化一些属性
*/
public ServerFrame()
{
super("聊天室服务器");
Toolkit kit = Toolkit.getDefaultToolkit(); //获取一个工具箱对象
Dimension screenSize = kit.getScreenSize(); //获取屏幕分辩率
setSize(WIDTH, HEIGHT); //设置窗口大小
setLocation(((screenSize.width - WIDTH) / 2),
(screenSize.height - HEIGHT) / 2); //设置窗口位置
setResizable(false); //把窗口设为不可改变大小,主要是为了界面
mesPane = new MesPanel("消息列表", 21, 43); //下面两行用于初始化两个面板对象
frendPane = new MesPanel("在线好友",21, 14);
// mesPane.setTitleFont(new Font("Serif", Font.BOLD, 14));
Container contentPane = getContentPane(); //把所有面板添加到窗口中
contentPane.add(mesPane, BorderLayout.CENTER);
contentPane.add(frendPane, BorderLayout.EAST);
try
{
mesOut = new PrintWriter(new FileWriter("聊天记录.txt", true));
}catch(IOException IO_e)
{
updateMes("Server类创建聊天记录文件时出现IO错误");
updateMes(IO_e.toString());
}
for(int i = 0; i < 30; i++)
{
mesStr[i] = "";
}
}
/**
此方法将接收到的消息显示在消息面板里,并且将消息记录在文件中
@param mes 即将显示在消息面板上的消息字符串
@throws IOException 如果写文件出错方法将抛出IOException异常
*/
public synchronized void updateMes(String mes)
{
int i = 0;
for( ; i < 29; i++)
{
mesStr[i] = mesStr[i + 1];
}
mesStr[i] = mes;
mesPane.updateMes(mesStr);
mesOut.println(mes);
}
/**
此方法将接收到的好友名字显示在"在线好友"列表里
@param frend 即将显示在列表中的好友名字
*/
public synchronized void updateFrend(String frend)
{
if(frend.endsWith("move"))
{
frend = frend.substring(0, frend.lastIndexOf("move"));
frendList.remove(frend);
}
else
{
frendList.add(frend);
}
Object[] tmpObj = frendList.toArray();
String[] tmp = new String[tmpObj.length];
for(int i = 0; i < tmpObj.length; i++)
{
tmp[i] = (String)tmpObj[i];
}
frendPane.updateMes(tmp);
}
/**
此方法用于刷新聊天记录流的缓冲区
*/
public void IOFlush()
{
mesOut.flush();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -