MouseListener implementieren

Status
Nicht offen für weitere Antworten.
J

jacky

Gast
Hallo..
Ich versuch ein Programm zu entwickeln das einen Punkt dahin zeichnet wo der letzte mausklick war.
Dazu sollen wir zwei Klassen schreiben.
Die MousListener die den Punkt dann gibt:

Code:
import java.awt.*; 
import java.awt.event.*;
import java.awt.event.MouseListener;
class MausDemoStrg implements MouseListener{
MausDemo anwendung = new MausDemo();	
	public MausDemoStrg(MausDemo a) {
	
	 }
	public void mousePressed(MouseEvent e) {
	anwendung.setaktuellerPunkt(e.getPoint());
	anwendung.repaint();
	}
	public void mouseReleased(MouseEvent e) {}
	public void mouseClicked(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}}

und die mit der mainmethode:

Code:
import java.awt.*; 
import java.awt.Frame; 
import java.awt.Graphics; 
import java.awt.Color; 
import java.awt.Event; 
import java.awt.AWTEvent; 
import java.awt.event.WindowListener; 
import java.awt.event.WindowEvent; 
import java.awt.event.MouseListener;
public class MausDemo extends Frame {

private int breite=500;
private int hoehe=500;


Point aktuellerPunkt = new Point();

public MausDemo(){
setSize(breite,hoehe);
setVisible(true); 

addWindowListener(new WindowListener() { 
public void windowClosing(WindowEvent e) { 
System.exit(0); 
         } 
       
         public void windowActivated(WindowEvent e){} 
         public void windowClosed(WindowEvent e){} 
         public void windowDeiconified(WindowEvent e){} 
         public void windowIconified(WindowEvent e){} 
         public void windowOpened(WindowEvent e){} 
         public void windowDeactivated(WindowEvent e){} 
            }); 


}

public void setaktuellerPunkt(Point p) {
aktuellerPunkt.x = p.x;
aktuellerPunkt.y = p.y;

}


public void paint(Graphics g) { 
	g.setColor(Color.black);
	g.drawRect(50,50,0,0);
}

public static void main(String[] args) {
MausDemo K = new MausDemo();
addMouseListener(new MausDemoStrg(K)); //funktioniert nicht

}
}

Wie übergebe ich jetzt den MausListener, so das die zusammen arbeiten ?
Ich hätte so gedacht wies da steht vor //funktioniert nicht.
Vielen Dank im Vorraus
 
S

SlaterB

Gast
die main ist eine Operation im luftleeren Weltraum,
wenn du da addMouseListener(new MausDemoStrg(K)); ausführst,
dann weiß niemand dass das irgendwas mit dem Frame zu tun hat,

eine Zeile davor hast du doch das Frame K definiert,
wenn dieses den MouseListener haben soll lautet der Befehl logischerweise
K.addMouseListener(new MausDemoStrg(K));

-----------

falls du dich nicht in der main sondern im Konstruktor oder einer Operation vom MausDemo befindest,
wäre das was anderes, dort würde
addMouseListener(new MausDemoStrg(K));
gut funktionieren, dort ist es klar dass das Frame-Objekt gemeint ist, der Befehl wird ja praktisch innerhalb des Objektes ausgeführt,
gleichbedeutend wäre dort auch
this.addMouseListener(new MausDemoStrg(K));

----------

eine weitere Möglichkeit:
du rufst
new MausDemoStrg(K);
auf und im Konstrukor des MouseListeners fügt sich dieser automatisch in das Frame ein ;)

public MausDemoStrg(MausDemo a) {
a.addMouseListener(this);
}
 
J

jacky

Gast
:lol:
Klugscheisser !!!
Java is beschissen wie Sau!
Ist überhaupt ein Wunder das ich es bis hier geschafft habe !!!!
Dank dir !
cu
 
S

SlaterB

Gast
steht doch da schon

anwendung.setaktuellerPunkt(e.getPoint());
anwendung.repaint();

das sollte funktionieren, jetzt musst du nur noch in der paint-Operation den Punkt (gespeichert in der Klassenvariable aktuellerPunkt) malen

--------

wichtig:
im MouseListener ist anwendung je gar nicht das Frame dass im Konstruktor übergeben wird sondern ein anderes
(new MausDemo()),

du musst dich also schon entscheiden welches du haben willst, das neu erzeugte oder das dass im Konstruktor übergeben wird
(werden nicht im Moment beide angezeigt?)
 
J

jacky

Gast
Das klappt nicht.
Wenn würde ich es auch nicht verstehen.
Der aktuellerPunkt ist doch dann in der Instanz anwendung und nich in K.
 
J

jacky

Gast
Ich will das nachdem ich geklickt habe er dort den Punkt malt.
 
S

SlaterB

Gast
also bei mir gehts mit diesen Klassen:

Änderungen: Kreis in paint eingefügt, in MausDemStrg das zweite MausDemo entfernt und das vom Konstruktor übernommen

Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseListener;
class MausDemoStrg implements MouseListener {
	MausDemo anwendung;
	public MausDemoStrg(MausDemo a) {
		anwendung = a;
	}
	public void mousePressed(MouseEvent e) {
		anwendung.setaktuellerPunkt(e.getPoint());
		anwendung.repaint();
	}
	public void mouseReleased(MouseEvent e) {
	}
	public void mouseClicked(MouseEvent e) {
	}
	public void mouseEntered(MouseEvent e) {
	}
	public void mouseExited(MouseEvent e) {
	}
}


----------------------

import java.awt.*;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Event;
import java.awt.AWTEvent;
import java.awt.event.WindowListener;
import java.awt.event.WindowEvent;
import java.awt.event.MouseListener;
public class MausDemo extends Frame {

	private int breite = 500;
	private int hoehe = 500;

	Point aktuellerPunkt = new Point();

	public MausDemo() {
		setSize(breite, hoehe);
		setVisible(true);

		addWindowListener(new WindowListener() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}

			public void windowActivated(WindowEvent e) {
			}
			public void windowClosed(WindowEvent e) {
			}
			public void windowDeiconified(WindowEvent e) {
			}
			public void windowIconified(WindowEvent e) {
			}
			public void windowOpened(WindowEvent e) {
			}
			public void windowDeactivated(WindowEvent e) {
			}
		});

	}

	public void setaktuellerPunkt(Point p) {
		aktuellerPunkt.x = p.x;
		aktuellerPunkt.y = p.y;

	}

	public void paint(Graphics g) {
		g.setColor(Color.black);
		g.drawRect(50, 50, 0, 0);
		g.drawArc(aktuellerPunkt.x,aktuellerPunkt.y,10,10,0,360);		
	}

	public static void main(String[] args) {
		MausDemo k = new MausDemo();
		k.addMouseListener(new MausDemoStrg(k)); //funktioniert 

	}
}
 
J

jacky

Gast
:applaus:
Joa klappt.
als ich
Code:
MausDemo anwendung = new MausDemo();
mit
Code:
MausDemo anwendung;
ausgetauscht habe gings.
Kannst mir das noch erklären ?
..und wie holt der sich denn den Punkt ?
:bahnhof:
 

lin

Top Contributor
mit MausDemo anwendung; initialisierst du anwendung noch nicht. Die initialisierung geschieht dann mit
Code:
andwendung = a;
wobei das a ja schon ein MausDemo-Objekt ist, erstellt in der main-Methode mit
Code:
MausDemo k = new MausDemo;
und dann MausDemoStrg übergeben mit
Code:
k.addMouseListener(new MausDemoStrg(k));

Den Punkt holt er folgendermassen:
Jetzt ist anwendung = k, also gleich der MausDemo. Damit können auch die Methoden der Klasse MouseDemo aufgerufen werden, also setAktuellerPunkt(). (siehe Zeile 11)
 
G

Guest

Gast
lin hat gesagt.:
mit MausDemo anwendung; initialisierst du anwendung noch nicht. Die initialisierung geschieht dann mit
Code:
andwendung = a;
wobei das a ja schon ein MausDemo-Objekt ist, erstellt in der main-Methode mit
Code:
MausDemo k = new MausDemo;
und dann MausDemoStrg übergeben mit
Code:
k.addMouseListener(new MausDemoStrg(k));

also anwendung wird aus a erzeugt und a aus k was eine Instanz von MausDemo ist.
Aber der Weg geht doch nur in eine Richtung.
Es müsste doch dann irgendwo auch stehen das k = anwendung ist. ???:L
 
S

SlaterB

Gast
anwendung wird nicht aus a erzeugt, anwendung IST a nachdem es zugewiesen wurde,
beide Variablen zeigen dann aufs gleiche Objekt,

die Reihenfolge ist natürlich nur eine von vielen Möglichkeiten,
genausogut kannst du anwendung = new MausDemo(); machen wie du es am Anfang hattest,
dann musst du aber das Programm an anderen Steillen ändern (zum Beispie in der Main nicht K = new MausDemo() ausführen)

der Grundgedanke: irgendwo wird genau EIN Frame erzeugt und dann an alle anderen Stellen hin übertragen damit es von überall zugreifbar ist,

in der von mir vorgeschlagenen Version wird in der main-Operation das MausDemo-Frame erzeugt und
in der Variablen k abgelegt, dann in den Konstruktor des MouseListeners übergeben (dabei wird lediglich eine Referenz auf das EINE Objekt kopiert) und im Konstruktor gehts weiter zur Exemplarvariable anwendung,

Ziel ist es dass am Ende anwendung und k auf das gleiche Objekt zeigen, und das wird auch erreicht
 
J

Jacky

Gast
hmm ngut.
danke für deine mühen :applaus:
das muss ich mir nochmal durchn kopp gehen lassen
gn8
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
H MouseListener klicks begrenzen Java Basics - Anfänger-Themen 4
H MouseListener begrenzen und Speichern Java Basics - Anfänger-Themen 1
V Problem - MouseListener/2DGraphics Java Basics - Anfänger-Themen 2
R Variablen MouseListener funktioniert auf anderen Pcs nur bedingt Java Basics - Anfänger-Themen 6
G MouseListener funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
GRAZZ0R MouseListener - Rechteck Bewegen Java Basics - Anfänger-Themen 1
R Variable Klassenübegreifend MouseListener Java Basics - Anfänger-Themen 0
D MouseListener funktioniert nach Timerstart nicht mehr Java Basics - Anfänger-Themen 9
J MouseListener für Schleifen-Objekte Java Basics - Anfänger-Themen 13
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
S GUI ImageIcon Mouselistener Link Java Basics - Anfänger-Themen 0
P MouseListener funktioniert nicht Java Basics - Anfänger-Themen 6
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Problem mit MouseListener Java Basics - Anfänger-Themen 4
T MouseListener, recht Taste Java Basics - Anfänger-Themen 2
M MouseListener funktioniert nicht Java Basics - Anfänger-Themen 9
E Mouselistener auf jTable Java Basics - Anfänger-Themen 18
B Variablen an MouseListener übergeben Java Basics - Anfänger-Themen 5
H MouseListener für ein eingefügtes Bild in einem JFrame Java Basics - Anfänger-Themen 7
H Mouselistener bei JTable Java Basics - Anfänger-Themen 4
G MouseListener für mehrere Buttons Java Basics - Anfänger-Themen 11
J MouseListener fuer gezeichnete Polyline Java Basics - Anfänger-Themen 3
L Label + MouseListener Java Basics - Anfänger-Themen 12
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
P Jtree MouseListener und NoCollapse Java Basics - Anfänger-Themen 2
M Schiebepuzzle: MouseListener und Graphics? Java Basics - Anfänger-Themen 6
M MouseListener Java Basics - Anfänger-Themen 2
kitz MouseListener Java Basics - Anfänger-Themen 8
B MouseListener & Graphics Java Basics - Anfänger-Themen 10
D Problem mit Mouselistener und jtable Java Basics - Anfänger-Themen 7
C fragen zu MouseListener Java Basics - Anfänger-Themen 3
M MouseListener funktioniert in jar-file nicht mehr Java Basics - Anfänger-Themen 13
F Logikproblem: Auf Mouselistener warten Java Basics - Anfänger-Themen 6
E Auf Mouselistener warten?! Java Basics - Anfänger-Themen 20
S Probleme mit 2 mouselistener Java Basics - Anfänger-Themen 6
A Frage zu MouseListener Java Basics - Anfänger-Themen 2
D Mouselistener Java Basics - Anfänger-Themen 2
A jPanel an MouseListener übergeben? Java Basics - Anfänger-Themen 2
S Swing JEditoPane MouseListener Java Basics - Anfänger-Themen 5
M Mouselistener Java Basics - Anfänger-Themen 4
S MouseListener funzt net. Java Basics - Anfänger-Themen 5
G MouseListener double click? Java Basics - Anfänger-Themen 1
V MouseListener Java Basics - Anfänger-Themen 5
M MouseListener Java Basics - Anfänger-Themen 3
N Mouselistener? Java Basics - Anfänger-Themen 5
T ein MouseListener pro Objekt sinnvoll? Java Basics - Anfänger-Themen 4
F MouseListener - Unhandled IOException Java Basics - Anfänger-Themen 2
U MouseListener Java Basics - Anfänger-Themen 2
L Array von Buttons, jeder soll MouseListener haben Java Basics - Anfänger-Themen 5
S MouseListener - Events auf Mouseklick Java Basics - Anfänger-Themen 14
L MouseListener Problem. Java Basics - Anfänger-Themen 2
S mouselistener Java Basics - Anfänger-Themen 3
N MouseListener Java Basics - Anfänger-Themen 2
P MouseListener wird anscheinend nicht benutzt Java Basics - Anfänger-Themen 12
N MouseListener - reagiert zu spät Java Basics - Anfänger-Themen 3
D JList - Textzeilen MouseListener zuweisen Java Basics - Anfänger-Themen 4
M prüfen ob mouselistener gesetzt ist. Java Basics - Anfänger-Themen 10
O image und mouseListener Java Basics - Anfänger-Themen 15
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
P Kann keinen MouseListener hinzufügen Java Basics - Anfänger-Themen 3
G MouseListener einbauen - wie? Java Basics - Anfänger-Themen 4
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
A LinkedList implementieren Java Basics - Anfänger-Themen 32
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
P9cman Ampel in Java implementieren Java Basics - Anfänger-Themen 3
districon Generics implementieren Java Basics - Anfänger-Themen 2
W UML Diagramm implementieren Java Basics - Anfänger-Themen 2
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
R Taxistand Implementieren Java Basics - Anfänger-Themen 1
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Gaudimagspam BMI in Java implementieren Java Basics - Anfänger-Themen 38
T Methode implementieren Java Basics - Anfänger-Themen 21
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
J alternierendes Probing-Verfahren für Hash-Tabellen implementieren Java Basics - Anfänger-Themen 0
B UML-Klassendiagram get und set implementieren Java Basics - Anfänger-Themen 2
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
E Klassen implementieren Java Basics - Anfänger-Themen 94
S Tokenizer selbst implementieren Java Basics - Anfänger-Themen 1
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
M WindowStateListener selbst implementieren Java Basics - Anfänger-Themen 8
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
N Stacks und Queues Implementieren Java Basics - Anfänger-Themen 2
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
X Polynome implementieren Java Basics - Anfänger-Themen 3
O Methoden implementieren, Sichtbarkeiten, Brüche Java Basics - Anfänger-Themen 104
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
D Erste Schritte Befehl back implementieren Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben