Hallo Ich versuche gerade mit Java einen Funktionsgraphen zu zeichnen. Dazu habe ich eine Methode "getY" die mir zu einem x Wert den passenden y-Wert zurückgibt. Jetzt wollte ich jeden Punkt einzeln mit einer while-Schleife zeichnen lassen. Allerdings wird immer nur der letzte Punkt gezeichnet. Es sieht so aus, als würde bei jedem Durchgang der while-Schleife alles von der while-Schleife gelöscht. Allerdings wird das Koordinatensystem nicht gelöscht, eben nur die Punkte aus der while-Schleife... Wo liegt da das Problem? Code der paintComponent() protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(0, 255, 1800, 255); g.drawLine(400, 0, 400, 540); do { g.drawLine(x, fn.getY(x), x, fn.getY(x)); x++; } while(x<50); } (fn ist ein Objekt der Klasse mit der Methode getY(x))
Poste doch mal bitte den kompletten Code... Wozu eine While Schleife wenn du effektiv ein for schleife nachbildest? Wo Ist x definiert, Hast du die Rückgabe von fn geprüft und warum berechnest du den Wert 2x,... und und und...
müsste es nicht eher irgendwie heißen:
1 | for(x=0; x<50; ++x){ |
2 | g.drawLine(x, fn.getY(x), x+1, fn.getY(x+1)); |
3 | }
|
wie sieht denn eine Linie aus, die ich von einem Punkt zu sich selbst zeichne? Ich würde da gar nix malen.
Vlad Tepesch schrieb: > müsste es nicht eher irgendwie heißen: >
1 | > for(x=0; x<50; ++x){ |
2 | > g.drawLine(x, fn.getY(x), x+1, fn.getY(x+1)); |
3 | > } |
4 | >
|
> > wie sieht denn eine Linie aus, die ich von einem Punkt zu sich selbst > zeichne? Ich würde da gar nix malen. Das wird's wohl sein. Eine Linie von (x,y) nach (x,y) ist halt nicht so prickelnd, eben ein Punkt. Von (x1, y1) nach (x2, y2) wird's da schon spannender.
Und dann gibts da auch noch den Fall, dass in
1 | protected void paintComponent(Graphics g) { |
2 | super.paintComponent(g); |
3 | g.drawLine(0, 255, 1800, 255); |
4 | g.drawLine(400, 0, 400, 540); |
5 | do
|
6 | {
|
7 | g.drawLine(x, fn.getY(x), x, fn.getY(x)); |
8 | x++; |
9 | } while(x<50); |
10 | }
|
x schon mal grundsätzlich einen Wert größer/gleich 50 hat, wenn die Funktion betreten wird. Auch in diesem Fall wird nur der letzte Punkt gemalt und der Fall könnte ganz leicht auftreten, wenn diese Funktion mehrmals aufgerufen wird.
Karl Heinz schrieb: > wenn diese Funktion mehrmals aufgerufen wird. Davon ist auszugehen... das wird nämlich vom Zeichenthread aufgerufen. Deshalb schrieb ich ja den Tatsächlichen Code zu posten und nicht solche Bruchstücke....
Ich habe dazu die Paint-Methode überschrieben damit das JPanel nicht automatisch neu gezeichnet wird. Erstelle mal eine Paint() Methode in deiner Klasse die dein System zeichnet, dann hast du die volle Kontrolle darüber war gezeichnet wird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.