JTabel -> rechte Maustaste

Marc79

Mitglied
Hallo zuammen.

eine Frage zum JTable.
Ich habe eine Tabelle, die mir Datensätze angzeigt.
Dieser Tabelle habe ich eine PopUp Menü zugewiesen.

Wenn ich jetzt auf die Tabelle mit der rechten Maustaste klicke, dann wird das PopUp Menü auch sichtbar.

Mein Problem ist dabei, dass wenn ich z.B. mit der Maus über dem dritten Tabelleneintrag bin und dann die rechte Maustaste klicke, das PopUp Menü auf der richtigen Datensatzhöhe sich befindet, die Zeile selbst aber nicht markiert ist.

Anders gesagt, ich muss zuerst linke Maustaste drücken um den Datensatz zu selektieren und dann die rechte Maustaste.

Gibt es hierfür eine Einstellung am JTable Steuerelemt selbst oder muss einen Dreizeiler einprogrammieren.

Ich verwende NetBeans 6.9.

Vielen Dank vorab für eure Hilfe!

Gruß Marc
 
Warscheinlich wird es auf eine kleine Erweiterung der Tabelle hinauslaufen.

Was mir spontan eingefallen ist, man könnte zum Beispiel einen MouseListener an die JTable anbinden. Dieser reagiert dann auf einen Rechstklick der Maus und selektiert die aktuelle im Fokus liegende Zeile.

Ob das ganze auch so funktioniert müsste man ausprobieren.
 
Hallo,

Ich hatte schon mal das selbe Problem und hab es dann auch kurzerhand so gelöst, wie Tsunamii es schon beschrieben hat.
Funktioniert auch. ;)

Meiner Meinung nach die einfachste Lösung... Wenn es eine schönere gibt, enthalt sie uns nicht vor!

Gruß,
Martin
 
Ich habe aktuell folgendes gemacht:
Code:
private void tableMousePressed(java.awt.event.MouseEvent evt) {                                   
        if (evt.isPopupTrigger())
        {
            contextMenu.show(evt.getComponent(), evt.getX(), evt.getY());
        }
    }

Damit kriege ich das PopUp Menü angezeigt, wenn die rechte Maustaste geklickt wurde.
Wie aber soll ich den Index der "quasi" selektierten Zeile abfeuern?
 
hier ist mal nen Ansatz, er müsste aber noch getestet werden:
Java:
myjtable.addMouseListener(this); // oder ein externer

public void mouseClicked(MouseEvent e) {
     if(e.getButton == MouseEvent.BUTTON2) { // ob rechte Maustaste gedrückt ist
          ... myjtable.getSelectedRow(); // sollte dir die geklickte reihe geben
          contextMenu... // PopupMenü öffnen
     }
}
 
hi,

so ähnliche hatte ich das schon probiert.
getSelectedRow() liefert leider -1, somit also keinen Wert.

... ich schaue, ob mir noch was einfällt ... scheint ja nicht so ohne zu sein unter java :)
 
So .... das ist die Lösung :)

Code:
this.jTable1.changeSelection(this.jTable1.rowAtPoint(evt.getPoint()), 0, false, false );

damit wird der Index neugesetzt, wenn die rechte Maustaste auf eine Tabelle geklickt wurde

Gruß Marc
 
Zurück