JTable mit MouseListener

Snape hat gesagt.:
Was für ein Objekt gibt Dir denn getParent() aus? Evtl. musst Du Dich rekursiv nach "oben" durcharbeiten.
Wie hast Du das Eventhandling denn bislang impelementiert?

danke für die schnelle antwort :)
also ich bekomme ein JPanel als parent, das muss eigentlich stimmen, denn meine aufrufende Klasse wurde von JPanel abgeleitet.
In meiner aufrufenden Klasse habe ich den MouseEvent und ActionEvent Listener auf sich selber (JPanel) gelegt.
Brauch ich eventuell noch einen anderen Listener?
 
Tut es dann in der JTable nicht
Code:
mouseReleased(MouseEvent me)
{
 getParent().handleMouseReleasedInTable(me); // also Deine Methode
}

Ggf. getParent() casten auf Deine Panelklasse.
 
Snape hat gesagt.:
Tut es dann in der JTable nicht
Code:
mouseReleased(MouseEvent me)
{
 getParent().handleMouseReleasedInTable(me); // also Deine Methode
}

Ggf. getParent() casten auf Deine Panelklasse.

args das forum hat mein letztes pos gefressen...

ja ich hab in die aufrufende Klasse einen funktion meinMouseEvent(me) eingefügt.
Beim Mausklick in die Tabelle mache ich:
getParent()).meinMouseEvent(me);
aber das kennt er ja verständlichweise nicht!
Ich kanns auch auf JPanel casten, bringt mir leider genausowenig... :(
wie also kann ich eine Funktion in einer "überliegenden" klasse aufrufen? Eclipse mault immer rum, weil er die Funktion (verständlicherweise) nicht kennt.
Irgendwas mache ich falsch ;)
 
Snape hat gesagt.:
Wie ich bereits oben schrieb:


;)
Ich dachte das sei klar, was damit gemeint ist...

danke euch beiden für die Antworten.
Ich weiss was du mit dem Casten gemeint hast, ich hab das auch gemacht:
((GUI_Inventar)getParent()).meinMouseEvent(e)

ABER:
1. das funktioniert nur wenn ich die GUI_Inventar importiere
2. weiss ich ja nicht welche Klasse (gibt 3 GUI´s) nun das MouseEvent ausgelöst hat. Also ist das Casten immer unterschiedlich! (GUI_Kunde, GUI_Bestellung und GUI_Inventar)

wie kann ich das denn allgemein halten?

@Vincentius:
ist kein scrollpane da :)


//EDIT:
bin nun an folgendem Punkt angekommen:
über getParent().getParent() bekomme ich GUI_Inventar zurück. So weit so gut!
nun mache ich
getParent().getParent().dispatchEvent(me);
allerdings wird in meiner GUI_Inventar dann kein Event ausgelöst!
 
Zuletzt bearbeitet:
Also ich sehe zwei Möglichkeiten, das Problem zu lösen:

1. Alle Deine GUI_XXX Klassen implementieren den MouseListener, dann brauchst Du den Parent nur noch auf einen MouseListener zu casten:
Code:
((MouseListener) getParent().getParent()).mouseClicked(me);
Nachteil ist, dass jede GUI_XXX Klasse alle fünf Methoden von dem MouseListener imlementieren muss.


2. Du definierst ein eigenes Listener-Interface (z.B. TableClickedListener) mit nur einer Methode (z.B. tableClicked(MouseEvent me)). Der Rest ist, wie in 1. Dann musst Du in Deiner Table-Klasse nur das Interface importieren und der Aufruf sieht dann so aus:
Code:
((TableClickedListener) getParent().getParent()).tableClicked(me);
 

Neue Beiträge

Zurück