selektieren mehrer Zellen in JTable

finend

Grünschnabel
Hallo zusammen,

Ich habe ein Problem mit dem Selektieren von mehreren Zellen in JTabels.
Mein Problem ist folgendes:
Ich habe eine Tabelle etwas zweckentfremdet; sie dient mir dazu ein zweidimensionale Steuerung für Winkeländerungen zu realisieren. Dafür habe ich eine Tabelle erstellt, deren Zellen nur 2x2 Pixel groß sind. Wenn ich den Default MouseMotionListener verwende, wird im ListSelectionMode SINGLE_SELECTION immer genau die Zelle selektiert über die ich gerade mit der Maus fahre. Bei meiner minimalen Zellengröße ist dies aber natürlich kaum zu sehen und deshalb möchte ich zusätzlich die acht Zellen drumherum zusätzlich selektieren. Das ganze sollte dann einen Marker darstellen.
Kann mir jemand weiterhelfen?
Gruß
 
Das ganze stellt ein Koordinatensystem dar, wobei in horizontaler Richtung der Azimuthwinkel und in vertikaler Richtung der Elevationswinkel aufgetragen ist. Der Benutzer soll dann darüber eine virtuelle Schallquelle im Raum bewegen können. Es wäre eben schön wenn das über ein MouseMotionEvent laufen könnte.
Meine Idee war eben einfach die, dass ich jeder Zelle ein Wertepaar aus Azimuth- und Elevationswinkel zuordnen kann und da ist mir halt nur ne Tabelle eingefallen.
Bei der Sache mit dem Marker habe ich das Problem, dass ich zwar irgendwelche anderen Zellen selektieren könnte, dann aber nicht mehr weiß wo der Mauszeiger nach einer Bewegung steht. Über getSelectedRow() zB bekomme ich ja dann meine zusätzlich selektierten Zellen zurück.
Ich hoffe das war verständlicher.
Bei einer Alternative zur Tabelle wäre zu beachten, dass ich gleichzeitig Azimuth- und Elevationswinkel ändern will.Das heißt Slider oder ähnliches fallen aus.
Danke schonmal
 
Hallo,

ein MouseMotionListener kannst du quasi an jede erdenkliche Komponente binden.
Nur eine JTable zu hinterlegen nur um eine MausPositon --> Zellen Beziehung zu
bekommen, denke ich ist nicht so sinnvoll !

Nimm z.B eine einfache JComponent, zeichne dir in der paintComponent(g)-Methode
ein schönes Raster, dazu evtl. die aktuelle Position deiner virtuellen Schallquelle.

Füge den MouseMotionListener hinzu und werte die Position des Drag-Events aus.
Es Sinnvoll auch den MouseListener zu implementieren um Start und Endpunkt
der Drag-Aktion genau zu bestimmen.

Die Werte rechnest du um zu Array-Indizes mit denen dann deine eigentlichen Winkel
zu finden sind. Wenn ein Lineares oder sonst wie zu berechnendes Verhälniss zwischen
Mausposition und Winkelwerten besteht, kann evtl. ganz auf die Array-Geschichte
verzichtet werden.

Gruß JAdix
 
Zurück