Methoden Java Freihand Problem

feldmarv

Mitglied
Sehr geehrtes JAVA Forum

Ich bin gerade auf dieses Forum gestossen, und bin auf die Hilfe angewiesen.
Ich bin JAVA Neuling und erlerne gerade die Sprache indem ich ein Draw-Programm schreibe.

Nun habe ich eine Klasse mit einem Swing Gui erstellt, funktioniert einwandfrei. Eine Klasse Vektor in der x,y abgelegt ist.
Dazu eine Klasse FreiHand.java darin habe die Methoden für das Freihandzeichnen.

Wenn ich aber nun versuche zu zeichnen, bekomme ich die Linien für Freihand nicht hintereinander sondern immer vom gleichen Ursprung aus. Ich kann den Fehler im Code aber nicht erkennen.
Kann mir hier jemand weiterhelfen?

Code von FreiHand.java

Java:
import java.awt.Graphics;
import java.util.ArrayList;



public class FreiHand extends Vector {
	
	private ArrayList<Integer> x = new ArrayList<Integer>();
	private ArrayList<Integer> y = new ArrayList<Integer>();
	
	public FreiHand(Integer x, Integer y){
		super(x,y); 												// erbt von Vector Parameter im Basiskonstruktur übernehmen
		
	}
	
	public void addPoint(Integer x, Integer y){
		this.x.add(x);
		this.y.add(y);
	}
	public void Paint(Graphics g){
		int prevX = this.GetX();
		int prevY = this.GetY();
		for(Integer i = 0; i < x.size(); i++){
		
			g.drawLine(prevX,prevY,x.get(i),y.get(i));
			
		}
	}	
}
 
Zuletzt bearbeitet:
Wo sind denn die Methoden GetX u. GetY? Vermutlich in der Superklasse. Da du diese Methoden nie überschreibst werden sie auch nur das gleiche tun wie die Superklasse.

Außerdem: In welchem Package ist denn diese Vector-Klasse?
 
Wo sind denn die Methoden GetX u. GetY? Vermutlich in der Superklasse. Da du diese Methoden nie überschreibst werden sie auch nur das gleiche tun wie die Superklasse.

Außerdem: In welchem Package ist denn diese Vector-Klasse?



Die getX und getY Methoden sind in der Vektor Klasse. Die Klassen Gui.java, Vector.java, Freihand.java
sollten meines Erachtens alle im gleichen Paket sein.


Vektor Klasse


Java:
import java.awt.Graphics;


public class Vector {
	private int x;
	private int y;
	
	
	public Vector(){
		this(0, 0);
	}
	
	public Vector(int x, int y){
		this.x = x;
		this.y = y;		
	}
	
	public void Paint(Graphics g){	
	}
	
	public void SetX(int x){
		this.x = x;	
	}
	
	public void SetY(int y){
		this.y = y;
	}
	
	public int GetX(){
		return x;
	}
	
	public int GetY(){
		return y;
	}
	
}
 
Ah, ich seh schon den Fehler: du vergisst die letzten Punkte neu zu setzen.

Java:
    public void Paint(Graphics g){
        int prevX = GetX();
        int prevY = GetY();
        for(Integer i = 0; i < x.size(); i++){     
            g.drawLine(prevX,prevY,x.get(i),y.get(i));
            // folgende 2 Zeilen fehlen bei dir!
            prevX = x.get(i);
            prevY = y.get(i);
            
        }
    }

Anmerkung:
this brauchst du nicht. Stört IMO nur den Lesefluss. Also dort wo du es nicht brauchst, kannst du es getrost weglassen. Außerdem Methodennamen sollten immer klein anfangen. Siehe auch Java Code Conventions
 
Zuletzt bearbeitet:
Ah, ich seh schon den Fehler: du vergisst die letzten Punkte neu zu setzen.


Anmerkung:
this brauchst du nicht. Stört IMO nur den Lesefluss. Also dort wo du es nicht brauchst, kannst du es getrost weglassen. Außerdem Methodennamen sollten immer klein Anfangen. Siehe auch Java Code Conventions



Vielen Vielen Dank für die schnelle Antwort.
Mein Abend ist gerettet und die Arbeit war nicht um sonst.

Ist wirklich ein super Forum hier.

Grüsse Marvin
 

Neue Themen


Zurück
Oben