MouseEvent feuern

Status
Nicht offen für weitere Antworten.
I

ich²

Gast
Hallo Forum,

so da heute mein "Tag der Frage" ( ;) ) ist, muss ich euch nochmal nerven.

Ich möchte dass meine Klasse ein MouseEvent (mouseClicked) abfeuert, aber irgendwie kann ich keine Methode wie fireMouseEvent(MouseEvent) oder fireMouseClicked(MouseEvent) in der API finden. Wie kann ich ansonsten ein MouseEvent "abfeuern"? Danke für die Tipps!

mfg

ich²
 

mattulla

Bekanntes Mitglied
Code:
public class Test extends JFrame implements MouseListener
{ 

	public static void main(String[] args)
	{
		Test test = new Test();
		test.mouseClicked(new MouseEvent(test, 0, 0, 0, 0, 0, 0, true));
	}

	public void mouseClicked(MouseEvent arg0) {
		System.out.println("Maus geklickt");
		
	}

	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
}
 
I

ich²

Gast
Hallo matulla,

ok, so ruft er aber nur die jeweiligen Methoden in der Klasse auf. Ich möchte aber dass meine Klasse (eine grafische Klasse die z. B. von JComponent erbt) an die Klasse, zu der sie geaddet wurde ein MouseEvent oder ein KeyEvent sendet.

mfg

ich²
 
I

ich²

Gast
Hallo nochmal,

anders gesagt, ich habe zwei Klassen. Beide erben von JComponent. Klasse1 addet Klasse2 in einem JScrollPane. Klasse2 ist ein MouseListener und ein KeyListener geaddet, der in Klasse2 bei aufruf grafisch etwas in der Klasse2 ändert.

Jetzt adde ich Klasse1 einem JPanel in einer 3. Klasse (dort wird das ganze auch angezeigt). Wenn jetzt in Klasse2 ein Mouse oder KeyEvent ausgelöst wird bekommt das zwar Klasse1 mit, aber Klasse3 die eigentlich darauf reagieren soll nicht. Wie schaffe ich es jetzt, dass Klasse3 das Mouse bzw. KeyEvent von Klasse 2 mitbekommt?

Nochmal zur Verdeutligung

Klasse3 addet Klasse1
Klasse1 addet Klasse2
Klasse2 feuert ein Key/MouseEvent und reagiert dementsprechend darauf
Klasse1 bekommt das ganze auch mit und kann auch darauf reagieren
Klasse3 bekommt aber von alle dem nichts mit, was sie aber soll.

Ich hoffe ihr habt mein Problem einigermaßen verstanden und könnt mir helfen

mfg

ich²
 

mattulla

Bekanntes Mitglied
hmmm also so ganz hab ichs nicht verstanden....vll kannst ja mal die wichtigsten Stellen aus deinem Quellcode posten....
 
I

ich²

Gast
Hi mattulla

Der Code ist auf Arbeit, aber im Groben und Ganzen schaut das so aus:

Code:
public class Klasse1 extends JComponent implements MouseListener, KeyListener {
// Listener werden geaddet
// sonstiger Programmcode
public void mouseClicked(MouseEvent evt) {
// mach was
}
// und die ganzen anderen MouseListener Methoden
public void keyPressed(KeyEvent evt) {
// mach was
}
// und die ganzen anderen KeyListener Methoden

Die Methoden werden auch alle aufgerufen und das gewünschte Ergebnis wird erzielt

Code:
public class Klasse2 extends JComponent {

   private Klasse1 kl1 = null;

   public Klasse2() {

      kl1 = new Klasse1();
      add(new JScrollPane(kl1));
   }
}

Wenn ich hier einen Mouselistener und einen KeyListener zusätzlich implementiere und an kl1 registriere, dann werden die dazugehörigen Methoden auch richtig aufgerufen. Ist in dieser Klasse aber unnötig

Code:
public class Klasse3 extends JFrame implements MouseListener, KeyListener {

   private Klasse2 kl2 = null;

   public Klasse3() {

      kl2 = new Klasse2();
      getContentPane().add(kl2);
      kl2.addMouseListener(this);
      kl3.addMouseListener(this);
   }
// die ganzen MouseListener Methoden mit einem test System.out.println
// die ganzen KeyListener Methoden mit einem test System.out.println
}

Nur blöderweiße wird zwar der Code der Listener in Klasse1 (und wenn ich die Listener adde auch in Klasse2) ausgegeben, aber unter keinen Umständen reagiert Klasse3 auf ein Mouse- bzw. KeyEvent

ich hoffe es ist jetzt klarer und ihr könnt mir helfen. Danke!

mfg

ich²
 

mattulla

Bekanntes Mitglied
Also ganz ehrlich finde ich, dass dein Code nicht so ganz zu deiner Beschreibung passt.

Klasse2 feuert ein Key/MouseEvent und reagiert dementsprechend darauf
in Kasse2 wird das Event vll ausgeloest jedoch hat diese keinen Listener und kann somit auch nicht reagieren


Klasse1 bekommt das ganze auch mit und kann auch darauf reagieren
Klasse1 implementiert zwar das Interface KeyListener jedoch sehe ich nirgends so etwas wie Klasse2.addKeyListener(Klasse1)


Klasse3 bekommt aber von alle dem nichts mit, was sie aber soll.
Bei deinem Code ist Klasse3 die einzigste die auf Ereignisse aus Klasse2 reagiert, zudem reagiert sie auch noch auf ihre eigenen KeyEvents.
 
I

ich²

Gast
Hi mattulla

mattulla hat gesagt.:
Also ganz ehrlich finde ich, dass dein Code nicht so ganz zu deiner Beschreibung passt.

sry, mein vorletzter Post war ein bisschen konfus. Deswegen lass den links liegen und beachte nur meinen letzten Post (den mit dem Code). Sorry nochmal für die Verwirrung :oops: .

mfg

ich²
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben