Java application cpu usage

Java application cpu usage



Source code java Monetize your website traffic with yX Media

package com.javatmz.javaapp.cpu;


import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.*;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
public class CPURealTime extends JFrame {
private static final int D_W = 1000;
private static final int D_H = 600;
int x = 0;
int y = 0;
int X0=100;
int Y0=500;
int maxY=200;
int maxX=500;
List<Integer> listValues=new ArrayList<Integer>();
DrawPanel drawPanel = new DrawPanel();
public CPURealTime() {
ActionListener listener = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
if (x >= D_W) {

drawPanel.repaint();
} else {

drawPanel.repaint();
}
}
};
Timer timer = new Timer(100, listener);
timer.start();
add(drawPanel);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
private class DrawPanel extends JPanel {
protected void paintComponent(Graphics g) {
super.paintComponent(g);

drawCPUValues(g);

drawAxes(g);
drawTitle(g);
}
private void drawCPUValues(Graphics g) {
addCPUValues();

for (int i=0;i<listValues.size();i++) {
Graphics lineValue=g;
lineValue.fillRect(X0+x+i, Y0-listValues.get(i), 1, listValues.get(i));
lineValue.setColor(Color.GREEN);
//System.out.println(" = "+listValues.get(i));
}


}

private void addCPUValues() {
OperatingSystemMXBean operatingSystemMXBean=ManagementFactory.getOperatingSystemMXBean();

for (Method method : operatingSystemMXBean.getClass().getDeclaredMethods()) {
method.setAccessible(true);
if(method.getName().startsWith("get") && Modifier.isPublic(method.getModifiers())){
Object value;
try{
value=method.invoke(operatingSystemMXBean);
//System.out.println(method.getName()+" = "+value);
}catch(Exception exception){
value=maxY;
}
if("getSystemCpuLoad".equals(method.getName())){
listValues.add(((int) (Double.parseDouble(value.toString())*100)));
if(listValues.size()>=500){
listValues.remove(0);
}
}
}
}



}
private void drawTitle(Graphics g) {
Graphics gTitle= g;
gTitle.setColor(Color.black);
gTitle.setFont(new Font("TitleStyle", 21, 30));
gTitle.drawString("CPU Monitoring with Java TMZ", 230, 100);
}
private void drawAxes(Graphics g) {
Graphics gAxeY= g;
gAxeY.setColor(Color.black);
gAxeY.drawLine(X0, Y0, X0, Y0-maxY);

Graphics gAxeYUnit= g;
gAxeYUnit.setColor(Color.black);
gAxeYUnit.drawString("100%",X0-20, Y0-maxY );

Graphics gAxeX= g;
gAxeX.setColor(Color.black);
gAxeY.drawLine(X0, Y0, X0+maxX, Y0);
}
public Dimension getPreferredSize() {
return new Dimension(D_W, D_H);
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new CPURealTime();
}
});
}
}

Comments