Java - Funktionsgraph zeichnen

OP #3609408
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))
#3609929
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.
#3609944
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.