Setter funktioniert nicht

Nuss

Mitglied
Hallo,

ich habe drei Klassen. Eine Gui-class in der es einen MouseListener gibt, durch den ich die x- und y-Position des Mausklicks in zwei Variablen speichere. Die Player-Position ist anfangs x=1, y=1.

In die CalcVector-class werden in die update-Methode über die main-class die Player und Mouseposition-Werte überliefert. Im Grunde soll ein Vektor zwischen dem Player und der Mauspositon errechnet werden.

Mein Problem liegt darin, dass ich möchte, dass die Player-Position bei Mausklick, die Position von der Maus annimmt. Irgendwie well mein Setter da nicht arbeiten.

Main:
Java:
package m_events;

import javax.swing.JFrame;

public class main {
	public static void main(String[] args) {
		Gui g = new Gui();
		CalcVector cv = new CalcVector();
		g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		g.setSize(300, 300);
		g.setVisible(true);
		
		while(true){
		cv.update(g.getPlayerX(), g.getPlayerY(), g.getMouseX(), g.getMouseY()); //Werte aus gui nach CalcVector
		
		System.out.println(g.getPlayerX()); //die Spielerposition ändert sich durch den Setter leider nicht
		
		try {
			Thread.sleep(30);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}
		
		
	}
}


Gui:
Java:
package m_events;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Gui extends JFrame{
	private JPanel mousepanel;
	private float m_posx;
	private float m_posy;
	private float p_posx=1;
	private float p_posy=1;
	
	
	public Gui(){
		super("title");
		mousepanel = new JPanel();
		mousepanel.setBackground(Color.WHITE);
		add(mousepanel, BorderLayout.CENTER);
		
		HandlerClass handler = new HandlerClass();
		mousepanel.addMouseListener(handler);
		mousepanel.addMouseMotionListener(handler);
	}
	
	private class HandlerClass implements MouseListener, MouseMotionListener{
		public void mouseClicked(MouseEvent event){
			m_posx=event.getX();
			m_posy=event.getY();
		}

		@Override
		public void mouseDragged(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseMoved(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mousePressed(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseReleased(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseExited(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}
	}
	
	public float getMouseX(){
		return m_posx;
	}
	
	public float getMouseY(){
		return m_posy;
	}
	public float getPlayerX(){
		return p_posx;
	}
	public float getPlayerY(){
		return p_posy;
	}
	public void setPlayerX(float x){
		p_posx=x;
	}
	public void setPlayerY(float y){
		p_posy=y;
	}
}

CalcVector:
Java:
package m_events;

public class CalcVector {
	private float playerx;
	private float playery;
	private float mousex;
	private float mousey;
	
	private float vector_x;
	private float vector_y;
	private float betrag;
	
	Gui g = new Gui();
	
	
	public void update(float px, float py, float mx, float my){
		mousex=mx;
		mousey=my;
		playerx=px;
		playery=py;
		
		
		// Calculating Vector and speed
		
		vector_x=mousex-playerx;
		vector_y=mousey-playery;
		betrag = (float) Math.sqrt(vector_x*vector_x+vector_y*vector_y);
		
		g.setPlayerX(mousex); //hier soll die Playerposition gleich der Mausposition gesetzt werden
		g.setPlayerY(mousey);
		
	}
	
	public float getVectorX(){
		return vector_x;
	}
	
	public float getVectorY(){
		return vector_y;
	}
	public float getMouseX(){
		return mousex;
	}
	public float getMouseY(){
		return mousey;
	}
	
	public float getBetrag(){
		return betrag;
	}
}

Ich hoffe ich habe alles einigermaßen verständlich erklären können. Danke schon einmal für jede Anregung und Hilfe!
 

njans

Top Contributor
Es ist kein Wunder, dass das bei dir nicht geht:
Du bekommst die SpielerPosition durch
Java:
 public void mouseClicked(MouseEvent event){
            m_posx=event.getX();
            m_posy=event.getY();
        }

Und dann überschreibst du diese mit
Java:
  g.setPlayerX(mousex); //hier soll die Playerposition gleich der Mausposition gesetzt werden
        g.setPlayerY(mousey);

Wieso willst du die überhaupt überschreiben?
Ich gewinne den Eindruck, dass du deine Struktur nicht sauber durchdacht hast.
 

Nuss

Mitglied
Danke für die Antwort,

irgendwie liegt da ein Missverständnis vor. Ich bekomme die Mausposition und möchte diese bei Klick in die Spielerpositionsvariablen hineinschreiben. Dafür verwende ich bei der update-Methode den Setter.

Gui:
Java:
public void setPlayerX(float x){
		p_posx=x;// hier wird die player position behandelt
	}public void setPlayerY(float y){
		p_posy=y;
	}

CalcVector:
Java:
g.setPlayerX(mousex); //hier wird die player position durch die maus position ersetzt
g.setPlayerY(mousey);

Der Sinn davon sollte später dann jener sein, dass der Spieler zur Mausposition "geht". Deshalb möchte ich dann auch den Vektor und Betrag davon berechnen und eine Geschwindigkeit festsetzen. Bisher habe ich das einfach einmal so "gelöst", dass die aktuelle Spielerposition der Mausposition bei Klick entspricht.
 

Daelras

Mitglied
In deiner Klasse CalcVector erstellst du ein neues Objekt der Klasse Gui, auf welchem in der Methode update die Methoden setPlayerX und setPlayerY aufgerufen werden. Die Methoden zum Auslesen der Koordinaten rufst du allerdings auf dem Gui-Objekt auf, welches du in deiner main-Methode anlegst. Daher ist dein Problem weniger, dass deine Setter nicht funktioniert, sondern dass du sie auf dem falschen Objekt aufrufst.
 

Nuss

Mitglied
Dh. wie kann ich dann sonst die Positionen aus Gi and CalcVector übergeben, wenn nicht mit:

Java:
cv.update(g.getPlayerX(), g.getPlayerY(), g.getMouseX(), g.getMouseY());

Das Problem ist, ich habe ehrlich gesagt, obwohl ich mir deine Antwort öfters durchgelesen haben, meinen Fehler noch nicht wirklich erkannt. Liegt der Fehler darin, dass ich an void update() 4 Werte aus Gui übergebe, und in derselben Methode die Werte in Gui verändere? Und mit welchem Objekt soll ich dann sonst die Koordinaten ändern bzw. aufrufen, wenn nicht mit Gui?
 

Daelras

Mitglied
Das Problem liegt nicht bei der Übergabe der Werte an dein CalcVector-Objekt. Das wird so funktionieren. In der update-Methode der CalcVector-Klasse rufst du deine Setter in den Zeilen 29 und 30 auf einem Gui-Objekt auf. Dieses Objekt erstellst du in Zeile 13. Eigentlich willst du allerdings das Gui-Objekt verwenden, was du in deiner main-Methode erstellst.
 
Zuletzt bearbeitet:

Nuss

Mitglied
Achso, in Ordnung. Ich hab's nun verstanden. Aber wie soll ich das Problem dann lösen? Eigentlich dachte ich, dass ich beim Erstellen eines Objektes, zB.:
Java:
Gui g = new Gui();
auf Variablen aus der Klasse gui zugreifen bzw. diese auch verändern kann, selbst wenn ich das Objekt bereits in einer anderen Klasse erzeugt habe.

Wie kann ich dann auf das Objekt g aus der Klasse main zugreifen, wenn's mit dem Objekt g aus CalcVector nicht funktionieren will? Ich habe da ehrlich gesagt gerade keinen blassen Schimmer wie ich da ansetzen sollte.

Danke schonmal für jegliche Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Java getter/setter funktioniert nicht! Java Basics - Anfänger-Themen 7
I If / Else in Setter? Java Basics - Anfänger-Themen 8
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
W Getter/Setter Java Basics - Anfänger-Themen 4
C Setter-Methode mit final-Attribut Java Basics - Anfänger-Themen 9
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
KogoroMori21 Getter und Setter Java Basics - Anfänger-Themen 5
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
V getter/setter Garage Java Basics - Anfänger-Themen 12
S getter, setter in abstrakter Klasse oder lieber Unterklassen Java Basics - Anfänger-Themen 4
topi Kapselung getter und setter Java Basics - Anfänger-Themen 5
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
S Getter/Setter - Variablenklasse ? Java Basics - Anfänger-Themen 5
S getter and setter Java Basics - Anfänger-Themen 12
L Getter und Setter Java Basics - Anfänger-Themen 2
JavaTalksToMe Kapselung Setter Frage Java Basics - Anfänger-Themen 15
M Generics getter und setter Methoden Java Basics - Anfänger-Themen 4
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
kilopack15 Ist diese setter-Methode richtig? Java Basics - Anfänger-Themen 2
L Klassen - Getter & Setter Methoden Java Basics - Anfänger-Themen 2
D Erste Schritte Java - Setter und Getter Java Basics - Anfänger-Themen 1
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
K Klassen Setter/Getter Java Basics - Anfänger-Themen 3
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
K Kapselung getter & setter Java Basics - Anfänger-Themen 11
F Setter Java Basics - Anfänger-Themen 4
gamebreiti Problem mit Setter in Superklasse Verkettung der Kostruktoren??? Java Basics - Anfänger-Themen 7
J Frage zu Setter u. Getter Java Basics - Anfänger-Themen 7
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
K getter & setter Java Basics - Anfänger-Themen 6
M Methoden Problem bei Setter. Java Basics - Anfänger-Themen 2
C getter/setter Problem anscheinend Java Basics - Anfänger-Themen 13
G Erste Schritte Getter und Setter Java Basics - Anfänger-Themen 12
S setter Java Basics - Anfänger-Themen 9
B Getter,Setter - Konstruktor überflüssig? Java Basics - Anfänger-Themen 26
N Sprite Methode (Getter, Setter, Konstruktor) Java Basics - Anfänger-Themen 9
S getter/setter aufrufen Java Basics - Anfänger-Themen 9
X OOP Getter/Setter überschreiben den Wert ihrer Variablen nicht Java Basics - Anfänger-Themen 4
S Ein Attribut/Instanz eines bestehendes Objektes mit SETTER Methode ändern Java Basics - Anfänger-Themen 3
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
S Setter Methode von Boolean Java Basics - Anfänger-Themen 11
V public Variablen vs Getter + Setter Java Basics - Anfänger-Themen 4
F Getter und Setter Java Basics - Anfänger-Themen 4
lulas[]args getter/setter umstellung Java Basics - Anfänger-Themen 6
propra Gegenteil von Setter-Methoden Java Basics - Anfänger-Themen 30
T Setter Methode Wertebereich eingrenzen Java Basics - Anfänger-Themen 5
F Setter-Methode bei double-Array Java Basics - Anfänger-Themen 6
A Setter verschachteln? Java Basics - Anfänger-Themen 4
D Kapselung override Setter Java Basics - Anfänger-Themen 5
B Klassen Getter-Setter vor neuem Klassenaufruf - wie? Java Basics - Anfänger-Themen 20
T Variablen fast identische Setter Java Basics - Anfänger-Themen 14
H OOP Setter im Konstruktor um code nicht zu wiederholen? Java Basics - Anfänger-Themen 2
N OOP Getter, Setter und andere Probleme Java Basics - Anfänger-Themen 8
A OOP Getter und Setter Java Basics - Anfänger-Themen 18
L Unterschied Konstruktor / Getter Setter Java Basics - Anfänger-Themen 13
L Setter und Getter für Arrays? Java Basics - Anfänger-Themen 4
N boolean bei Setter und getter methoden Java Basics - Anfänger-Themen 21
N immer Setter-Methoden verwenden? Java Basics - Anfänger-Themen 54
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
U Problem mit setter Java Basics - Anfänger-Themen 17
Houly Setter/Getter MEthoden testen Java Basics - Anfänger-Themen 4
P OOP Getter&Setter Methoden funktionieren nicht Java Basics - Anfänger-Themen 7
S Setter bei Variablen Java Basics - Anfänger-Themen 6
R Enum und dann setter Setzen? Java Basics - Anfänger-Themen 44
H Setter-und-Getter-Konvention Java Basics - Anfänger-Themen 8
V Reflection API - getter und setter Java Basics - Anfänger-Themen 7
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
C Getter/Setter Java Basics - Anfänger-Themen 61
H Frage zu getter und setter Java Basics - Anfänger-Themen 5
G [Hibernate] Could not find a setter for property Java Basics - Anfänger-Themen 2
S Unbenutzte/überflüssige Getter/Setter herausfinden? Java Basics - Anfänger-Themen 2
M getter/setter bei JTextField ? Java Basics - Anfänger-Themen 21
G warum Setter/Getter Java Basics - Anfänger-Themen 25
S In einer Liste auf getter und setter zugreifen Java Basics - Anfänger-Themen 6
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben