2014-06-26 56 views
0

我想在两个单独的JProgressBar s中显示当前杯子使用情况和磁盘使用情况。而且它应该每秒更新一次。如何使用java做到这一点?我对Java编程颇为陌生,所以请给我一些代码示例。如何显示JProgressBar中的CPU和磁盘使用情况?

在此先感谢。

+2

这是一个三部分问题。 1.如何获得CPU使用率?2.如何获得磁盘使用情况?3.如何将这些数据粘合到一组更新进度条中。你应该尝试限制你的问题到一个主题,并解释你尝试过的。 – Petesh

回答

0

可以使用javasysmon-0.3.4.jar文件,以获取系统信息相关的CPU使用率,内存使用率等

一些下面列出了这些方法,如果你想要其他东西,你可以探索。

     JavaSysMon monitor=new JavaSysMon(); 
      //System.out.println("Operating System name is 
         "+monitor.osName()); 


      long usersMillis = monitor.cpuTimes().getUserMillis(); 
      /*System.out.println(String.format("User milli are %d days, %d 
         hr, %d min, %d sec", 
      TimeUnit.MILLISECONDS.toDays(usersMillis), 
      TimeUnit.MILLISECONDS.toHours(usersMillis), 
      TimeUnit.MILLISECONDS.toMinutes(usersMillis), 
       TimeUnit.MILLISECONDS.toSeconds(usersMillis) 
      ));*/ 

      long systemMillis = monitor.cpuTimes().getSystemMillis(); 
      /*System.out.println(String.format("System milli are %d days, %d 
         hr, %d min, %d sec", 
      TimeUnit.MILLISECONDS.toDays(systemMillis), 
      TimeUnit.MILLISECONDS.toHours(systemMillis), 
      TimeUnit.MILLISECONDS.toMinutes(systemMillis), 
       TimeUnit.MILLISECONDS.toSeconds(systemMillis) 
      ));*/ 

      long idleMilli = monitor.cpuTimes().getIdleMillis(); 
      /*System.out.println(String.format("Idle milli are %d days, %d 
         hr, %d min, %d sec", 
      TimeUnit.MILLISECONDS.toDays(idleMilli), 
      TimeUnit.MILLISECONDS.toHours(idleMilli), 
      TimeUnit.MILLISECONDS.toMinutes(idleMilli), 
       TimeUnit.MILLISECONDS.toSeconds(idleMilli) 
      ));*/ 

      /*CpuTimes time=new CpuTimes(usersMillis, systemMillis, 
         idleMilli); 
      cpuUsage=String.format("%.5f", 
         monitor.cpuTimes().getCpuUsage(time));*/ 
     // System.out.println("CPU Usages "+String.format("%.5f", 
         monitor.cpuTimes().getCpuUsage(time))); 

      if(initialTime == null){ 
       initialTime = monitor.cpuTimes(); 
      } 

      cpuUsage = new 
         Float(monitor.cpuTimes().getCpuUsage(initialTime)).toString(); 
      initialTime = monitor.cpuTimes(); 


      long cpuUpTimeL = monitor.uptimeInSeconds()*1000; 

      float t = cpuUpTimeL/(float)(1000 * 60 * 60 * 24); 
      int days=(int) t; 
      t=t-days; 
      t= (t*24); 
      int hrs=(int) t; 
      t=t-hrs; 
      t=t*60; 
      int mins=(int) t; 
      t=t-mins; 
      t=t*60; 
      int secs=(int) t; 
      cpuUpTime=GetTotalTimeTakenInJourney.getTotalTimeTaken(days, hrs, 
         mins, secs); 
     // System.out.println("CPU Up time "+days+" days "+hrs+" hrs 
         "+mins+" mints "+secs+" seconds"); 

      //System.out.println("CPU Numbers "+monitor.numCpus()); 

      long totalBytes=monitor.physical().getTotalBytes(); 
      totalRam=totalBytes/(float)(1024*1024*1024); 
      long freeBytes=monitor.physical().getFreeBytes(); 
      freeRam=freeBytes/(float)(1024*1024*1024); 
      long ramUsages=totalBytes-freeBytes; 
      usedRam=ramUsages/(float)(1024*1024*1024); 
0

,你可以通过这个代码使用任务列表命令

Runtime.getRuntime().exec(command) 
相关问题