EventHandler in extra Klasse

Status
Nicht offen für weitere Antworten.

JavaXaver

Mitglied
Hi erstmal,

ich bin neu hier und begruesse alle Forumsteilnehmer.

So, und schon hab ich mein erstes Problem:
...folgender Code als Beispiel.

Code:
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.*;
import java.applet.Applet;


public class EventHandTest extends Applet implements MouseListener
{

	Label lbTest = new Label("noch nicht geklickt!");

	public void init()
	{
		lbTest.setBounds(50,50,150,50);
		addMouseListener(this);
		add(lbTest);
	}


	public void mousePressed(MouseEvent me) {}
	public void mouseExited(MouseEvent me) {}
	public void mouseEntered(MouseEvent me){}
	public void mouseClicked(MouseEvent me) {}
	public void mouseReleased(MouseEvent me)
		{
				lbTest.setText("x: " + me.getX() + "   y: " + me.getY());
		}


}


Ich wuerde jetzt aus diesem Applet gerne den MouseListener und MouseEvent rausnehmen und in einer gesonderten EventHandler Klasse unterbringen nur wie geht das?

Vielen Dank fuer eure Hilfe ich steh echt auf dem Schlauch.

gruessle
 
Eigene Klasse erstellen, die MouseListener implementiert. Diese dann bei addMouseListener instanzieren.
Code:
addMouseListener(new MyMouseListener());

Musst dann nur noch schauen, wie du dann aus diesem auf das Label zugreifen kannst.
 
Hi, danke fuer die Antwort.
Ich habs natuerlich schon mal versucht, funktioniert nur leider nicht. Hier mal die Verteilung auf die 2 Klassen..

Code:
import java.applet.Applet;
import java.awt.*;

public class EvtHandlTest extends Applet
{
	public Label lbTest = new Label("noch nicht geklickt...");
	EventHand eventHand;


	public void init()
	{

		lbTest.setBounds(50,50,150,50);
		eventHand = new EventHand(this);
		add(lbTest);
	}
}

und dann der EventHandler...

Code:
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.*;

public class EventHand extends Object implements MouseListener
{

	EventHandlTest eventHandlTest;




	public EventHand(eventHandlTest)
	{

		this.eventHandlTest=eventHandlTest;
		eventHandlTest.addMouseListener(this);

	}

	public void mousePressed(MouseEvent me) {}
	public void mouseExited(MouseEvent me) {}
	public void mouseEntered(MouseEvent me){}
	public void mouseClicked(MouseEvent me) {}
	public void mouseReleased(MouseEvent me)
		{
			lbTest.setText("x: " + me.getX() + "   y: " + me.getY());

		}
}

DANKE FUERS DRUEBERSCHAUEN

Gruss
 
Du musst den EventHandler nicht nur Instanzieren, sondern auch dem Applet bekannt machen. Eben mit
Code:
import java.applet.Applet;
import java.awt.*;

public class EvtHandlTest extends Applet
{
   public Label lbTest = new Label("noch nicht geklickt...");
   EventHand eventHand;


   public void init()
   {

      lbTest.setBounds(50,50,150,50);
      eventHand = new EventHand(this);
      add(lbTest);
      addMouseListener(eventHand);
   }
}

Weiterhin musst du beim EventHandler nicht von Objekt ableiten. Ein einfaches
Code:
public class EventHand implements MouseListener
sollte reichen.
 
Danke fuer die schnell Antwort, klappt aber leider noch nicht ganz..

Code:
import java.applet.Applet;
import java.awt.*;


public class EvtHandlTest extends Applet
{
	public Label lbTest = new Label("noch nicht geklickt...");
	EventHand eventHand;


	public void init()
	{
		
		lbTest.setBounds(50,50,150,50);
		eventHand = new EventHand(this);
		add(lbTest);
		addMouseListener(eventHand);
	}

}

Code:
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.*;

public class EventHand implements MouseListener
{

	EventHandlTest eventHandlTest;


	public EventHand(eventHandlTest)
	{
		this.eventHandlTest=eventHandlTest;
		eventHandlTest.addMouseListener(this);
	}

	public void mousePressed(MouseEvent me) {}
	public void mouseExited(MouseEvent me) {}
	public void mouseEntered(MouseEvent me){}
	public void mouseClicked(MouseEvent me) {}
	public void mouseReleased(MouseEvent me)
		{
			lbTest.setText("x: " + me.getX() + "   y: " + me.getY());

		}
}

leider bekomm ich einen Haufen Fehlermeldungen wenn ich das kompiliere
Bei EvtHandlTest:

.\EventHand.java:11: <identifier> expected
public EventHand(eventHandlTest)
^
.\EventHand.java:26: ')' expected
}
^
.\EventHand.java:8: cannot resolve symbol
symbol : class EventHandlTest
location: class EventHand
EventHandlTest eventHandlTest;
^
.\EventHand.java:11: cannot resolve symbol
symbol : class eventHandlTest
location: class EventHand
public EventHand(eventHandlTest)

und bei EventHand:

C:\JAVA\Lernhefte\Jav04N\EvtHandlTest\EventHand.java:11: <identifier> expected
public EventHand(eventHandlTest)
^
C:\JAVA\Lernhefte\Jav04N\EvtHandlTest\EventHand.java:26: ')' expected
}
^
2 errors

Prozess beendet mit Exit-Code 1

DANKE




[/code]
 
Also deine EvtHandlTest ist richtig, setzt aber voraus, dass du vorher (bzw. gleichzeitig) auch EventHand kompilierst.
In dieser sind allerdings einige Fehler.

1) Im Konstruktor fehlt der Typ vom dem die Variable sein soll (nämlich EvtHandlTest)
2) Im EventHand brauchst du den MouseListener von EvtHandlTest nicht nochmal setzen, dass kannst du also wegnehmen.
3) Bei MouseRealeased greifst du auf das Label von EvtHandlTest zu. Korrekt müsste es hier dementsprehcend heißen:
Code:
eventHandlTest.lbTest.setText("x: " + me.getX() + "   y: " + me.getY());

Anbei auch nochmal zwei von mir erstellte Klassen wo alles funktioniert:
Code:
import java.applet.Applet;
import java.awt.Label;

public class EventHandlerTest extends Applet {

	public Label lbTest = new Label("noch nicht geklickt...");

	public void init() {
		lbTest.setBounds(50, 50, 150, 50);
		add(lbTest);
		addMouseListener(new EventHandler(this));
	}
}
Code:
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class EventHandler implements MouseListener {

	EventHandlerTest eventHandlerTest;

	public EventHandler(EventHandlerTest eventHandlerTest) {
		this.eventHandlerTest = eventHandlerTest;
	}

	public void mousePressed(MouseEvent me) {
	}

	public void mouseExited(MouseEvent me) {
	}

	public void mouseEntered(MouseEvent me) {
	}

	public void mouseClicked(MouseEvent me) {
	}

	public void mouseReleased(MouseEvent me) {
		eventHandlerTest.lbTest.setText("x: " + me.getX() + "   y: "
				+ me.getY());
	}
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben