Hallo,
ich möchte ein Digramm bauen, dass sich so wie die Diagramme (bei 2-Core 2 Diagramme) der CPU-Auslastung im Task-Manager verhält. Der Verlauf wandert immer weiter. Doch irgendwie weiß ich nicht mehr weiter.
Hier was ich bisher habe:
Über update(...) sollen immer die neuen Werte eingegeben werden können. Doch nun weiß ich nicht mehr weiter, wie ich weitermachen soll.
Habt Ihr ein Paar Tipps?
data89
ich möchte ein Digramm bauen, dass sich so wie die Diagramme (bei 2-Core 2 Diagramme) der CPU-Auslastung im Task-Manager verhält. Der Verlauf wandert immer weiter. Doch irgendwie weiß ich nicht mehr weiter.
Hier was ich bisher habe:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DiagrammMain extends JFrame {
private DPanel pan;
public DiagrammMain() {
Thread t = new ValueThinker(this);
t.start();
this.setTitle("Diagramm");
this.setLayout(new BorderLayout());
this.pan = new DPanel();
this.add(this.pan, BorderLayout.CENTER);
this.pack();
this.setSize(200, 100);
this.setVisible(true);
}
public void value(double v) {
int a = (int) Math.round(v*100);
this.pan.update(a);
this.pan.repaint();
}
public class DPanel extends JPanel {
int[] werte;
int letzt = 0;
int cnt = 0;
int vcnt = 0;
int[] vv;
public DPanel() {
this.werte = new int[10];
this.vv = new int[200];
for (int i = 0; i < this.vv.length; i++) {
this.vv[i] = -1;
}
}
public void paintComponent(Graphics g) {
g.setColor(new Color(0, 0, 0));
g.fillRect(0, 0, 200, 100);
g.setColor(new Color(0, 150, 0));
for (int i = 0; i < 10; i++) {
g.drawLine(0, i*10, 200, i*10);
}
for (int i = 0; i < 20; i++) {
g.drawLine(i*10+this.cnt, 0, i*10+this.cnt, 100);
}
g.setColor(new Color(0, 255, 0));
int i = 1;
while (this.vv[i] != -1) {
g.drawLine(i-1, this.vv[i-1], i, this.vv[i]);
i++;
}
}
public void update(int a) {
this.vv[this.vcnt] = a;
this.vcnt++;
if (this.cnt >= 8) {
this.cnt = 0;
} else {
this.cnt++;
}
}
}
private class ValueThinker extends Thread {
private DiagrammMain main;
public ValueThinker(DiagrammMain d) {
this.main = d;
}
public void run() {
while (!this.isInterrupted()) {
double v = Math.random();
this.main.value(v);
try {
Thread.sleep(1000);
} catch (Exception e) {
return;
}
}
return;
}
}
public static void main(String[] args) {
new DiagrammMain();
}
}
Habt Ihr ein Paar Tipps?
data89