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

📄 azsdasd.java

📁 这是一个仿QQ的聊天程序
💻 JAVA
字号:
package com.cloudcloud.soft;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.text.*;
import java.awt.event.*;
import java.util.Date;
public class azsdasd extends JFrame implements MouseListener, Runnable
{
	JTabbedPane tabbedPane;
	JTextPane logPane;
	JScrollPane splog;
	JScrollPane sptable;
	MemberStatusTableModel mstm;
	JTable tms;
	azsdasd()
	{
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(100,80,800,600);
		this.setTitle("CloudQQ服务管理器");
		logPane = new JTextPane();
		logPane.setEditable(false);
		logPane.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
		splog = new JScrollPane(logPane);

		mstm = new MemberStatusTableModel();
		tms = new JTable(mstm);
		sptable = new JScrollPane(tms);
		
		tabbedPane = new JTabbedPane();
		tabbedPane.setFont(new Font("宋体", Font.PLAIN, 12));
		tabbedPane.add("系统日志", splog);
		tabbedPane.add("用户跟踪", sptable);
		tabbedPane.addMouseListener(this);

		this.add(tabbedPane);
		
		Thread t = new Thread(this);
		t.start();
	}
	public void insert(String str, AttributeSet attrSet)
	{
		Document doc = logPane.getDocument();
		str = str + "\n";
		try
		{
			doc.insertString(doc.getLength(), str, attrSet);
		}
		catch(Exception e)
		{
			
		}
	}
	public void setServerDocs(String str)
	{
		SimpleAttributeSet attrSet = new SimpleAttributeSet();
		StyleConstants.setForeground(attrSet,Color.BLACK);
		str = "[服务器]" + new qwqw().getDateAndTime() + str;
		insert(str, attrSet);
		splog.getVerticalScrollBar().setValue(splog.getVerticalScrollBar().getMaximum());
	}
	public void setClientDocs(String str)
	{
		SimpleAttributeSet attrSet = new SimpleAttributeSet();
		StyleConstants.setForeground(attrSet,Color.BLUE);
		str = "[客户端]" + new qwqw().getDateAndTime() + str;
		insert(str, attrSet);
		splog.getVerticalScrollBar().setValue(splog.getVerticalScrollBar().getMaximum());
	}
	public void setErrDocs(String str)
	{
		SimpleAttributeSet attrSet = new SimpleAttributeSet();
		StyleConstants.setForeground(attrSet,Color.RED);
		str = "[错误]" + new qwqw().getDateAndTime() + str;
		insert(str, attrSet);
		splog.getVerticalScrollBar().setValue(splog.getVerticalScrollBar().getMaximum());
	}
	public void putMembetToTable(MemberLog ml)
	{
		mstm.putMember(ml);
	}
	public void moveMemberFromTable(String num)
	{
		mstm.moveMember(num);
		this.repaint();
	}
	public void refreshTable()
	{
		mstm.setOnlineTime();
	}
	public void mouseClicked(MouseEvent e){}
	public void mousePressed(MouseEvent e) 
	{
		mstm.setOnlineTime();
	}
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	public void run()
	{
		while(true)
		{
			try
			{
				Thread.sleep(10000);
				refreshTable();
				this.repaint();
			}
			catch(Exception e)
			{
				
			}
		}
	}
}

class MemberStatusTableModel extends AbstractTableModel
{
	Object[][] MemberStatus = new Object[20][6];
	String[] colNames = {"QQ号码","IP地址","上线时间","在线时间","状态"};
	public int getRowCount() 
	{
		return MemberStatus.length;
	}

	public int getColumnCount() 
	{
		return MemberStatus[0].length - 1;
	}

	public Object getValueAt(int rowIndex, int columnIndex) 
	{
		return MemberStatus[rowIndex][columnIndex + 1];
	}
	public String getColumnName(int columnIndex)
	{
		return colNames[columnIndex];
	}
	public boolean isCellEditable(int row, int col)
	{
		return false;
	}
	public void putMember(MemberLog m)
	{
		int row = 0;
		while(MemberStatus[row][0] != null)
		{
			row++;
		}
		MemberStatus[row][0] = Long.toString(m.getLogtime());
		MemberStatus[row][1] = m.getQQNum();
		MemberStatus[row][2] = m.getIP();
		MemberStatus[row][3] = m.getLoginTime();
		MemberStatus[row][4] = m.getOnlineTime();
		MemberStatus[row][5] = m.getStatus();
	}
	public void moveMember(String num)
	{
		for(int row = 0; row <= 19; row++)
		{
			if(MemberStatus[row][1].equals(num))
			{
				for(int i = 0; i <= 5; i++)
				{
					MemberStatus[row][i] = null;
				}
			}
		}
	}
	public void setOnlineTime()
	{
		long now = new Date().getTime();
		for(int row = 0; row <= 19; row++)
		{
			if(MemberStatus[row][1] != null)
			{
				long min = (now - Long.parseLong(MemberStatus[row][0].toString())) / 60000;
				MemberStatus[row][4] = (min == 0)? "少于一分钟" : min + "分钟";
			}
		}
	}
}

class MemberLog
{
	public static final int SHOW = 1;
	public static final int HIDE = 0;
	String QQNum;
	String IP;
	String loginTime;
	long logtime;
	String onlineTime;
	int status;
	public void setQQNum(String n)
	{
		QQNum = n;
	}
	public void setIP(String n)
	{
		IP = n;
	}
	public void setLoginTime(String lt)
	{
		loginTime = lt;
	}
	public void setOnlineTime(String ot)
	{
		onlineTime = ot;
	}
	public void setStatus(String s)
	{
		if(s.equals("在线"))
		{
			status = this.SHOW;
		}
		if(s.equals("隐身"))
		{
			status = this.HIDE;
		}
	}
	public void setLogtime(long s)
	{
		logtime = s;
	}
	public String getQQNum()
	{
		return QQNum;
	}
	public String getIP()
	{
		return IP;
	}
	public String getLoginTime()
	{
		return loginTime;
	}
	public String getOnlineTime()
	{
		return onlineTime;
	}
	public String getStatus()
	{
		if(status == this.SHOW)
		{
			return "在线";
		}
		else
		{
			return "隐身";
		}
	}
	public long getLogtime()
	{
		return logtime;
	}
}

⌨️ 快捷键说明

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