Mausereignisse

Status
Nicht offen für weitere Antworten.

Sindbad1983

Top Contributor
Hi!

Ich wollt grad die unterschiedlichsten Mausereignisse ausprobieren, aber irgendwie funktioniert das überhaupt nicht!
Kann mir bitte jemand helfen?

Ich rufe in "Maus" die Klasse "Circle" auf und konstruiere einen einfachen Kreis!Nun möchte ich,dass sich die Farbe dieses Kreises ändert, sobald ich mit der Maus die Fläche des Kreises berühre.

Leider funktioniert das nicht!
Hat jemand eine Ahnung, woran das liegen könnte?
Oder hab ich da etwas vergessen bzw. nicht verstanden?

Also ich hab wieder 2 Klassen:

Code:
import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Maus extends JApplet implements MouseListener, MouseMotionListener{

		Circle circle1;

	public void init(){

		Container c;
		c=getContentPane();
		c.setBackground(Color.gray);
		circle1=new Circle(150,100,100);
		c.add(circle1);

	}

	public void mouseMoved(MouseEvent e){}
	public void mouseDragged(MouseEvent e){}
	public void mousePressed(MouseEvent e){}
	public void mouseReleased(MouseEvent e){}
	public void mouseClicked(MouseEvent e){}
	public void mouseEntered(MouseEvent e){

		circle1.changeColor(Color.red);
		repaint();

	}

                public void mouseExited(MouseEvent e){}
}

und die 2.schaut so aus:

Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Circle extends JComponent{

			private int xpoint;
			private int ypoint;
			private int radius;
			private int verschiebe=1;
			private Color color_circle=new Color(0,255,233);

			public Circle(int xpoint,int ypoint,int  radius){

				this.xpoint=xpoint;
				this.ypoint=ypoint;
				this.radius=radius;
				setBounds(xpoint,ypoint,radius,radius);

			}

			public void paint(Graphics g){
				g.setColor(color_circle);
				g.fillOval(xpoint,ypoint,radius,radius);
			}


			public void changeColor(Color color){
				color_circle=color;
			}
}


Vielen Dank im Voraus!
mfg,Tommy
 

Sindbad1983

Top Contributor
Oh..das hab ich vergessen:

circle1.addMouseListener(this);

aber jetzt hab ich das Problem, dass der Kreis schon rot wird, sobald ich mit der Maus ins Applet fahre....ich möcht aber, dass der Kreis erst sein Farbe ändert, wenn ich tatsächlich im Kreis bin!
Hmm..vielleicht kennt sich da wer aus!?!
Danke
 

L-ectron-X

Gesperrter Benutzer
In diesem Fall müsste die Mouse-Methode in Circle implementiert werden, weil sich ja was tun soll, wenn die Maus in den Kreis bewegt wird. Derzeit hört der MouseListener aber nur auf Ereignisse im gesamtem Applet.
 

Illuvatar

Top Contributor
Du kannst einen MouseMotionListener implementieren, in den Methoden berechnen ob der Cursor im Kreis ist (frag Beni) und dann rotfärben.
 

Sindbad1983

Top Contributor
Aber wie soll das gehn?
Ich brauch ja den MouseListener in der Klasse Maus, weil ich circle1.addMouseListener(this) sagen muss!
Und sobald ich implements MouseListener schreib, muss ich alle Methoden( mouseEntered....) in der Klasse Maus hinzufügen!
Also wie soll ich dann diese Methode in Circle schreiben?
Oder muss ich dort auch alle Methoden reinschreiben und dort die Methoden implementieren?
Oder brauch ich eine dritte Klasse?
Oh..ich glaub ich hab ein kleine Verständnisproblem! :-(
 

Illuvatar

Top Contributor
Du ersetzt den MuoseListener durch den MouseMotionListener. Da musst du dann andere Methoden überschreiben, nämlich mouseMoved und mouseDragged.
Und bei einem Event nimmst du die Koordinaten und berechnest, ob es innerhalb von dem Kreis ist.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben