//-------------------------------------------------------------------------------------------------------
import java.applet.*;
import java.util.*;//系统属性
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.text.*;
import java.net.*;
import java.lang.String;
public class lwhf extends Applet{
InetAddress myIPaddress=null;//网络对象
private Date currentDate;//日期对象
private SimpleDateFormat formatter;//日期的格式类型
String lastdate;//存储日期
Thread b1;//线程声明
String sysname;//系统名称
long sysio;//内存
long sysioToo;//用于存储内存比较信息
String sysioWing=new String();;//内存状态信息
Runtime r=Runtime.getRuntime();//获得主要机器信息
// String bss=new String(""+System.getProperty("user.home")
//---------------------双重缓冲
Image MyImage; //存放备用屏幕的内容
Graphics MyGs; //存储比用屏幕的画笔
/*createImage方法是定义在java.awt.Compont类中的
方法,由于我们的applet是它的子类,从而就自然地继承了该方法。
*/
//String cs2=new String(""+System.getProperty("user.home"));
public void init()
{
//r.
sysioToo=r.freeMemory();//获得第一次启动时的空闲内存
// username=new String(getParameter("n"));
}
class b extends Thread
{
public void run()
{
while(true) {
repaint ();
try {
sysio=r.freeMemory();//获取内存
if(sysioToo<sysio)//小于当前的空闲内存
{
sysioToo=sysio;
sysioWing="正常的内存消耗";
}
else if(sysio>(sysioToo/10)*8)
{
sysioWing="正常的内存消耗";
}
else if(sysio>(sysioToo/10)*6)
{
sysioWing="轻微的内存消耗";
}
else if(sysio>(sysioToo/10)*1)
{
sysioWing="严重的内存消耗";
}
Thread.sleep(600);
} catch (InterruptedException e) {}
}
}
}
public void start()
{
sysname=new String(""+System.getProperty("os.name")+"--"+System.getProperty("os.version")+"版");
try
{
MyImage=createImage(getSize().width,getSize().height);//创建备用屏幕
MyGs=MyImage.getGraphics();//获取备用屏幕的幻屏幕的画笔
}
catch(Exception e)
{
MyGs=null;//若出错,就置备用屏幕的绘图备用屏幕的画笔null
}
b1=new Thread(new b());
try { myIPaddress=InetAddress.getLocalHost();}
catch (UnknownHostException e) {}
formatter = new SimpleDateFormat ("yyyy年/MMM/dd日EEE hh:mm:ss",
Locale.getDefault());//设置日期的格式
b1.start();//启动线程
}
public void stop()
{
sysname=null;
sysio=0;
b1.stop();//释放线程
b1=null;//让出对象以便垃圾收集进程活动
myIPaddress=null;
formatter=null;
MyGs=null;//释放备用屏幕的化笔-
MyImage=null;//释放备用屏幕
}
public void paint(Graphics g)
{
//setBackground(Color.DARK_GRAY);//设置背景颜色Color.BLUE蓝色,Color.GRAY灰色
// g.setColor(Color.);
g.setColor(Color.DARK_GRAY);//首先设置画整个背景的颜色为深黑色
g.fillRect(0,0,getSize().width,getSize().height);//画一个填充矩形----背景
g.setColor(Color.black);//设置网格的颜色为黑色
currentDate = new Date();//事例化日期对象
lastdate = formatter.format(currentDate);//用格式化的日期对象填充要输出的字服对象
int w=getSize().width/10;//计算屏幕的宽度并等分10分
int h=getSize().height/10;//计算屏幕的高并等10份
int p=h;//将屏幕高度的10之1给P
Font f=new Font("TimesRoman" , Font.BOLD , 26);//设置左边的字体
Font f1=new Font("TimesRoman" , Font.BOLD , 17);//设置右边的子体
g.fillRect(0,0,3,getSize().height);//左边竖线
g.fillRect(getSize().width-3,0,3,getSize().height);//右边的竖线
g.fillRect(0,0,getSize().width,3);//上边的横县
g.fillRect(0,getSize().height-3,getSize().width,3);//下边的横线
g.fillRect(w*5-w/2,0,2,getSize().height);//左边竖线
for(int i=0;i<=10;i++)
{
g.fillRect(0,p,getSize().width,2);//下边的横线
p=p+h;
}//Color.YELLOW黄色--Color.WHITE白色
g.setColor(Color.green);
g.setFont(f);
g.drawString("监控项目",w,getSize().height/10-getSize().height/50);
g.drawString("系统时间:",w,getSize().height/10*2-getSize().height/50);
g.drawString("主机IP --:",w,getSize().height/10*3-getSize().height/50);
g.drawString("操作系统:",w,getSize().height/10*4-getSize().height/50);
g.drawString("分辨率 --:",w,getSize().height/10*5-getSize().height/50);
g.drawString("可用颜色:",w,getSize().height/10*6-getSize().height/50);
g.drawString("总的内存:",w,getSize().height/10*7-getSize().height/50);
g.drawString("可用内存:",w,getSize().height/10*8-getSize().height/50);
g.drawString("版本说明:",w,getSize().height/10*9-getSize().height/50);
g.drawString("技术支持:",w,getSize().height/10*10-getSize().height/50);
g.drawString("状态说明",w*6-w/10,getSize().height/10-getSize().height/50);//系统时间
g.setFont(f1);
g.drawString(lastdate,w*5-w/10,getSize().height/10*2-getSize().height/50);//系统时间
g.drawString(""+myIPaddress,w*5-w/10,getSize().height/10*3-getSize().height/50);//本机ip
g.drawString(sysname,w*5-w/10,getSize().height/10*4-getSize().height/50);//操作系统版本
g.drawString(Toolkit.getDefaultToolkit().getScreenSize().width+"*"+ Toolkit.getDefaultToolkit().getScreenSize().height+"---推荐使用1024*768",w*5-w/10,getSize().height/10*5-getSize().height/50);//
g.drawString(""+Toolkit.getDefaultToolkit().getMaximumCursorColors()+"--推荐65535或以上",w*5-w/10,getSize().height/10*6-getSize().height/50);//
g.drawString(""+r.totalMemory()+"k",w*5-w/10,getSize().height/10*7-getSize().height/50);//
g.drawString(""+sysio+"k"+"--"+sysioWing,w*5-w/10,getSize().height/10*8-getSize().height/50);//
g.drawString("1.1升级版(解决图像闪动问题)",w*5-w/10,getSize().height/10*9-getSize().height/50);//
g.drawString("QQ:273725113",w*5-w/10,getSize().height/10*10-getSize().height/50);//
//
}
public void update(Graphics g)
{
if(MyGs!=null){//如果备用屏幕创建成
super.paintComponents(MyGs);
paint(MyGs);
g.drawImage(MyImage,0,0,this); //将备用屏幕内容画到当前屏膒aint( )方法中所画的内容都将画在备用然后再调用drawImage( )方法将备用屏籵中的内容画到当前屏幕上
}
else
//如果创建备用屏幕不成功的话,就和以前一样,将系统生成的当前屏幕的绘图上下文环境g传递给paint( )方法
paint(g);
}
}