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

📄 server.java

📁 一个仿qq的程序源码 一个用纯java开发的
💻 JAVA
字号:
package qianqian.gui;

import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.border.MatteBorder;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.WindowEvent;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;

import qianqian.cschat.Service;
import qianqian.p2pchat.control.Controller;
import qianqian.p2pchat.tools.Tools;

//服务器端的监听窗口
public class Server extends JFrame {
	static final long serialVersionUID = 1;
	private JTextArea loger;
	private static Server server;
	private MatteBorder border = new MatteBorder(
			new java.awt.Insets(1, 1, 1, 1), new java.awt.Color(195, 225, 255));
	private JPopupMenu popup;
	private final String clrLog = "刷新日志";
	private final String loadLog = "加载日志";
	private final String hideLog = "隐藏窗口";
	private final String quitLog = "关闭服务";

	// 建立监听服务的窗口并显示
	private Server() {
		initPopupMenu();
		setTitle("QianQian Logger");
		setIconImage(new javax.swing.ImageIcon("icons/www.gif").getImage());
		loger = new JTextArea();
		loger.setEditable(false);
		loger.setBorder(border);
		JScrollPane jscrl = new JScrollPane(loger);
		jscrl.setPreferredSize(new java.awt.Dimension(300, 150));
		jscrl.setAutoscrolls(true);
		getContentPane().add(jscrl, "Center");
		getContentPane().add(new JLabel(new ImageIcon("icons/title.gif")),
				"North");
		setLocation(350, 250);
		setResizable(false);
		setAlwaysOnTop(true);
		pack();

		loger.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				if (e.getButton() == MouseEvent.BUTTON3) {
					popup.show(loger, e.getX(), e.getY());
					popup.pack();
					popup.setVisible(true);
				}
			}

			public void mouseReleased(MouseEvent e) {
				if (MouseEvent.BUTTON3 == e.getButton()) {
					popup.show(loger, e.getX(), e.getY());
					popup.pack();
					popup.setVisible(true);
				}
			}
		});

		addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dispose();
			}

			public void windowIconified(WindowEvent e) {
				setVisible(false);
			}
		});
	}
	
	public static Server getInstance() {
		if (server == null) {
			synchronized(Server.class) {
				if(server == null)
					server = new Server();
			}
		}	
		return server;
	}

	private void initPopupMenu() {
		popup = new JPopupMenu();
		popup.setInvoker(this);
		
		popup.add(new AbstractAction(clrLog) {
			static final long serialVersionUID = 1;

			public void actionPerformed(ActionEvent e) {
				try {
					clrLog();
				} catch (Exception ex) {
					ex.printStackTrace();
				}
				loger.setText("");
			}
		});
		
		popup.add(new AbstractAction(loadLog) {
			static final long serialVersionUID = 1;

			public void actionPerformed(ActionEvent e) {
				try {
					loadLog();
				} catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		
		popup.add(new AbstractAction(hideLog) {
			static final long serialVersionUID = 1;

			public void actionPerformed(ActionEvent e) {
				try {
					setVisible(false);
				} catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		
		popup.add(new AbstractAction(quitLog) {
			static final long serialVersionUID = 1;

			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
	}

	public synchronized void setLog(String protocol, String log, String info) {
		loger.append(protocol + "Connected from " + log + "\0\0>>" + info
				+ '\n');
	}

	private void clrLog() throws Exception {
		String log = loger.getText();
		if (!log.isEmpty()) {
			FileOutputStream fos = new FileOutputStream("log/server.log", true);
			fos.write((Tools.getTimeInfo()+"\r\n").getBytes());
			fos.write(log.getBytes());
			fos.close();
		}
	}

	private void loadLog() throws Exception {
		File logFile = new File("log/server.log");
		if (logFile.exists()) {
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					new FileInputStream(logFile)));
			while (reader.ready()) {
				loger.append(reader.readLine() + "\n");
			}
			reader.close();
			logFile.delete();
		}
	}

	public void dispose() {
		int message = JOptionPane.showConfirmDialog(this, "真的要关闭服务器?", "提示",
				JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);
		if (message == 0) {
			try {
				Controller.getInstance().quit();
				Service.getInstance().quit();
				clrLog();
			} catch (Exception ex) {
			}
			super.dispose();
			System.exit(0);
		}
	}
}

⌨️ 快捷键说明

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