- -無聊中...打造一個服務器觀測臺簡陋:包括內存使用率等等

//-------------------------------------------------------------------------------------------------------
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);
 }
}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章