JTable mit MouseListener

desmoloch

Mitglied
hi!
ich hab mir eine eigene JTable klasse mit nem eigenen AbstractTabellenModell, Cell und HeaderRenderer geschrieben.
Jetzt füge ich auf meine tabelle einen MouseListener ein, leider funktioniert dieser bei einem klick in die Tabelle nicht
Wenn ich in die Tabelle klicke wo keine Zeile ist, funktionierts!
Wo muss ich denn das MouseListener Event noch "weiterleiten" oder einfügen?
Ich kann leider den code net posten, ist viel zu lang!
 
Hallo,

das hier:
Code:
table.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
        // hier das Mausklick-Event behandeln
    } 
});
müsste eigentlich reichen. Wenn nicht, musst Du Deinen Code doch hier posten. ;)
 
ja das funktioniert ja leider nicht ;)
ich erzeuge eine Instanz meines eigenen Tables und mache dann einfach
tabelle.addMouseListener(this);

nur auf einen Klick mit einer gefüllten zelle wird kein Event (MouseKlicked, MousePressed) etc ausgelöst :(
der Code würde aber wirklich das Forum sprengen...
Hab schon versucht den MouseListener in den Header und/oder Cell Renderer einzubauen. Aber leider überall ohne erfolg :(
 
Probier mal mouseReleased(...)
Und wenn das auch nicht hilft, änder mal den Listener und weise nicht this als Listener hinzu, sondern einen neuen anonymen.
 
ok danke habe das Problem nun (fast) gelöst!
Wenn ich den MouseListener auf meine neue Instanz meiner Tabelle lege, dann geht kein klick auf vorhandene Spalten. Das hab ich nun gelöst indem der MouseListener schon in meiner Tabelle Klasse hinzugefügt wird.
Jetzt aber das Problem: Meine Tabelle Klasse soll allgemein bleiben, ich will das MouseEvent dort NICHT behandeln. Kann ich das MouseEvent irgendwie an die Klasse weiterleiten die Tabelle instanziert hat?
 
Sicher. Z.B. enn Du in der mouseReleased sowas hier hast:
Code:
mouseReleased(MouseEvent me)
{
 myReferenceToAnotherClass.handleMouseReleasedInTable(me);
}

Oder meinst Du anders herum? Dann solltest Du drüber nachdenken, die andere Klasse als Listener an die Tabelle zu hängen und ein entsprechendes Event auszulösen.
 
Snape hat gesagt.:
Sicher. Z.B. enn Du in der mouseReleased sowas hier hast:
Code:
mouseReleased(MouseEvent me)
{
 myReferenceToAnotherClass.handleMouseReleasedInTable(me);
}

Oder meinst Du anders herum? Dann solltest Du drüber nachdenken, die andere Klasse als Listener an die Tabelle zu hängen und ein entsprechendes Event auszulösen.

ähm also jein :)
schon klar das ich eine Funktion in einer anderen Klasse bei Mausklick aufrufen könnte. Allerdings kennt die Klasse Tabelle mein Fenster nicht.
Folgende Situation:
Ich habe 4 Panels. In jedes Panel wird die Tabelle geladen. Nun soll abhängig in welchem Panel die Tabelle ist, ein anderes Event beim klick ausgelöst werden. Von daher würde ich am liebsten das MouseEvent einfach an das Panel "weitergeben". Versuche das grad irgendwie über getParent!
 
Snape hat gesagt.:
Sollte gehen mit getParent().

ja leider wills trotzdem net... :(
habs versucht mit:

getParent().dispatchEvent(me);
getParent().handleEvent(me);
(me ist mein MouseEvent)


leider geht er aber dann nicht in meine "aufrufende" Klasse...
wie kann ich denn in meiner aufrufenden Klasse ein Event aufrufen, bzw weiterleiten?
 
Zuletzt bearbeitet:
desmoloch hat gesagt.:
ja leider wills trotzdem net... :(
habs versucht mit:

getParent().dispatchEvent(me);
getParent().handleEvent(me);

leider geht er aber dann nicht in meine "aufrufende" Klasse...
wie kann ich denn in meiner aufrufenden Klasse ein Event aufrufen, bzw weiterleiten?

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?
 

Neue Beiträge

Zurück