Hallo,
ich arbeite zur Zeit an einer GUI für eine telemedizinische Anwendung und möchte eine kleines EKG simulieren. Im augenblick versuche ich auf einem JLabel ein Polygon zu zeichnen und durch repaint zu aktualisieren. Allerdings funktioniert das repaint() nicht. Ich habe nun mehrere Foren durch, allerdings hat kein Lösungsansatz geholfen. Ich meine ein grundsätzlichen Denkfehler zu machen, der mir leider nicht auffällt.
Hier ein Ausschnitt des Codes. Ich habe ihn in eine extra Klasse ausgegliedert und in ein Frame gepackt damit man etwas sieht.
Bin für jede Inspiration dankbar. Viele Grüße Benji
ich arbeite zur Zeit an einer GUI für eine telemedizinische Anwendung und möchte eine kleines EKG simulieren. Im augenblick versuche ich auf einem JLabel ein Polygon zu zeichnen und durch repaint zu aktualisieren. Allerdings funktioniert das repaint() nicht. Ich habe nun mehrere Foren durch, allerdings hat kein Lösungsansatz geholfen. Ich meine ein grundsätzlichen Denkfehler zu machen, der mir leider nicht auffällt.
Hier ein Ausschnitt des Codes. Ich habe ihn in eine extra Klasse ausgegliedert und in ein Frame gepackt damit man etwas sieht.
Code:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class testEKG extends JLabel implements Runnable {
int[] x_array = new int[200];
int[] y_array = new int[200];
public testEKG(){
this.setSize(300, 300);
this.setVisible(true);
for (int i=0; i != x_array.length; i++ ){
x_array[i] = i+50 ;
y_array[i] = 150;
}
}
@Override
public void paint(Graphics g){
g.setColor(Color.BLUE);
g.drawPolyline(x_array, y_array, x_array.length);
}
public void run() {
while(true){
for (int i=0; i != x_array.length; i++ ){
x_array[i] = i+50;
y_array[i] = (int) Math.round(Math.random()*40+10);
System.out.println(x_array[i] + " - " + y_array[i]);
this.repaint();
}
}
}
public static void main(String[] arg){
JFrame frame = new JFrame();
frame.getContentPane().add(new testEKG());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
Thread t1 = new Thread(new testEKG());
t1.start();
}
}
Bin für jede Inspiration dankbar. Viele Grüße Benji