Veröffentlicht 23. November 200420 j Wenn ich ne tabelle mit z.B. 5 Zeilen und Spalten habe, wie kann ich dann im Programm selber beispielsweise die Zellen mit den Koordinaten (Zeile2, Spalte 2), (Zeile2,Spalte3), (Zeile3/Spalte2), (Zeile3,Spalte3) selektieren? Blockweise würde reichen, sprich dass ich immer ein Rechteck selektiere aus der Tabelle, müssen also nicht unbedingt auch Selektionen gehen à la Zeile 1 Spalten 3-5, Zeile 2 nur Spalte 3, Zeile 3 Spalten 2-4. Hab schon zig Sachen versucht, aber irgendwie kann ich nirgendwo ein Intervall setzen, obwohl es wohl irgendwas wie Anchor gibt, daß als Ankerpunkt fungiert und wo man dann nur noch nen Intervalpunkt angeben muß, der den gegenüberliegenden Punkt im selektierten Rechteck darstellen würde. Aber leider weiß ich nicht, wo ich die beiden Punkte setzen kann.
23. November 200420 j Hi, da du das Problem ausführlich beschrieben hast, wäre es schön wenn du die Lösung beschreibst. Vielleicht hilft es mal jemanden. Gruß Jaraz
23. November 200420 j Also wenn du eine Zelle selektiert hast, sollte das deselektieren funktionieren, wenn du folgendes aufrufst: tabelle.changeSelection(zeilenindex, spaltenindex, true, false) Allerdings muß die Tabelle hierzu sowohl zeilen als auch spaltenbasierte Selektionen zulassen, also beiden Parameter auch auf true setzen) Ich würds gerne beschreiben, allerdings habe ich das Problem, daß ich das Ganze recht einfach lösen konnte, weil ich alle Daten schon über eine Adapterklasse hatte: Ich habe über jene Klasse die Zwischenablage für copy/paste- Zwecke eingebunden. Da die fokussierte Zelle in der JTable anscheinend immer der aktuelle Ankerpunkt ist, brauchte ich somit aus meinen Daten bloß die gegenüberliegnde Zelle des Rechtecks zu ermitteln und dann hab ich folgende Zeile aufgerufen: tabelle.changeSelection(zeilenindex, spaltenindex, false, true) Damit selektiert er alle Zellen zwischen dem Ankerpunkt und der anhand der Indices angegebenen Zelle PS: Sehe gerade, du wolltest alle Zellen deselektieren, dazu müsstest du den Fokus (und somit den Ankerpunkt) also auf die 1.Zelle setzen und dann die letzte Zelle (also die gegenüberliegende) per Indices im Statement von oben angeben.
30. November 200420 j habe eine einfachere Variante gefunden: clearSelection(); eine Methode nämlich, danke dennoch für die hilfe, habe es vorher so geschafft aber nur über nen umweg
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.