Hallo zusammen,
habe das Problem das in meiner Klasse "Animator" das als Thread abläuft und ein JComponent beinhaltet, keine aktualisierte Zeichnung darstellt.
Es erfolgt immer wieder eine neu Berechnung von y1Werte-y4Werte double Array, die geht auch ohne Probleme, aber es wird bei der Zeichnung nicht berücksichtigt, sonder immer die alten Werte genommen ({0,1}).
Kann mir bitte jemand bei diesem Problem helfen?
habe das Problem das in meiner Klasse "Animator" das als Thread abläuft und ein JComponent beinhaltet, keine aktualisierte Zeichnung darstellt.
Java:
public class Animator extends JPanel implements Runnable{
private Image dbImage;
private Graphics dbGraphics;
private double tMin;
private double tMax;
private double xMin;
private double xMax;
private double deltaX;
private double deltaT;
private double [] y1Werte = {0,1};
private double [] y2Werte = {0,1};
private double [] y3Werte = {0,1};
private double [] y4Werte = {0,1};
private double [] xWerte = {0,1};
private double t;
private Evaluate evaluate1;
private Evaluate evaluate2;
private Evaluate evaluate3;
private boolean flag = true;
private DecimalFormat decimalFormat = new DecimalFormat("0.00000000");
public Animator(){
Locale.setDefault(Locale.US);
}
public void run(){
while(true){
if(t>tMax){
t = tMin;
}
evaluate1.berechnenY(t);
evaluate2.berechnenY(t);
evaluate3.berechnenY(t);
y1Werte = evaluate1.gibYwerte();
y2Werte = evaluate2.gibYwerte();
y3Werte = evaluate3.gibYwerte();
xWerte = evaluate1.gibXwerte();
summe();
t += deltaT;
System.out.println(t);
repaint();
}
}
/* Initalisierung aller Variablen */
public void init(double argTmin,double argTmax,double argXmin,double argXmax,
double argDeltaT,double argDeltaX,String argAusdruck1,
String argAusdruck2,String argAusdruck3){
t = argTmin;
tMin = argTmin;
tMax = argTmax;
xMin = argXmin;
xMax = argXmax;
deltaX = argDeltaX;
deltaT = argDeltaT;
evaluate1 = new Evaluate();
evaluate2 = new Evaluate();
evaluate3 = new Evaluate();
initEvaluate(evaluate1,argAusdruck1);
initEvaluate(evaluate2,argAusdruck2);
initEvaluate(evaluate3,argAusdruck3);
}private void initEvaluate(Evaluate argEvaluate, String argAusdruck){
argEvaluate.setDeltaX(deltaX);
argEvaluate.berechneXindex(xMin, xMax);
argEvaluate.initArrays();
argEvaluate.einsortierenX();
try {
argEvaluate.initParser(argAusdruck);
} catch (IllegalNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void stop(){
flag = false;
}
private void summe(){
y4Werte = new double [evaluate1.gibArrayLaenge()];
for(int i=0;i<=evaluate1.gibArrayLaenge()-1;i++){
y4Werte[i] = Double.parseDouble(decimalFormat.format(y1Werte[i]+y2Werte[i]+y3Werte[i]));
}
}
public void paint(Graphics g){
g.setColor(Color.red);
if(y1Werte != null){
funktionZeichnen(g,y1Werte,xWerte,1,5,20);
funktionZeichnen(g,y2Werte,xWerte,2,5,20);
funktionZeichnen(g,y3Werte,xWerte,3,5,20);
funktionZeichnen(g,y4Werte,xWerte,4,5,20);
}
} public void funktionZeichnen(Graphics g,double [] argYfunktion,double [] argXfunktion,
int argTeil,int argAufteilung,int deltaX){
for(int i = 0;i < argYfunktion.length -1;i += 1){
/* Abfrage ob Y-Grenzen eingehalten werden in beide Richtungen */
if((argTeil * this.getHeight()/argAufteilung) - (int)(argYfunktion[i+1]*deltaX) >= (argTeil * this.getHeight()/argAufteilung)- ((this.getHeight()/argAufteilung)/2)){
if((argTeil * this.getHeight()/argAufteilung) - (int)(argYfunktion[i+1]*deltaX)<= (argTeil * this.getHeight()/argAufteilung)+ ((this.getHeight()/argAufteilung)/2))
g.drawLine(this.getWidth()/2 +(int)(argXfunktion[i]*deltaX), (argTeil * this.getHeight()/argAufteilung)- (int)(argYfunktion[i]*deltaX), this.getWidth()/2 + (int)(argXfunktion[i+1]*deltaX), (argTeil * this.getHeight()/argAufteilung)- (int)(argYfunktion[i+1]*deltaX));
}
}
}
Es erfolgt immer wieder eine neu Berechnung von y1Werte-y4Werte double Array, die geht auch ohne Probleme, aber es wird bei der Zeichnung nicht berücksichtigt, sonder immer die alten Werte genommen ({0,1}).
Kann mir bitte jemand bei diesem Problem helfen?
Zuletzt bearbeitet von einem Moderator: