📄 azsdasd.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 + -