Mehrere Zeilen einer Tabelle Löschen

angeleyes21

Grünschnabel
Hi zusammen.

Ich muss für dieses Semester eine CD-Verwaltung erstellen. Soweit Funktioniert auch alles schon.
Das einzige Problem was aussteht, ist das Löschen mehrere ausgewählter Zeilen. Zur Zeit versuch ich das Problem mit checkboxen zu bekämpfen allerdings klappt das nciht so ganz wie es soll.
Habe derzeit eine geistige Blockade und brauche dringend Hilfe. Anbei ist mein bisher erstelltes Programm.
Wenn mir jemand helfen könnte wäre ich ihm oder ihr sehr Dankbar

LG Marc
 

Anhänge

  • Java-Projekt_1.1.rar
    72,1 KB · Aufrufe: 22
Werd doch mal etwas genauer:

Woran hakt es? Am Auswaehlen mehrerer Zeilen der Liste? Was denn ueberhaupt für eine Liste?
Und wozu die Checkboxen?

Ich - und vermutlich auch viele andere - habe werde Lust noch Zeit, mir deinen Code aufs Gerate Wohl anzusehen.
Erklär mal, wo genau das Problem liegt und versuch vielleicht auch gleich, die passenden Code-Fragmente mit Hilfe von [ java ] Tags direkt ins Forum zu posten - das hilft uns, dir zu helfen!
 
nun das Problem gestaltet sich folgendermaßen:

ich habe eine tabelle in der verschieden Daten abgespeichert werden, wie zum beispiel CD-Titel, anzahl der tracks und so weiter.
Nun soll es möglich sein mehrere CD's aus dieser Tabelle zu löschen. Derzeit geht das leider nur einzeln.

Nun habe ich schon das problem dass ich nicht mehrere Zeilen der Tabelle markieren kann und mein programm sich diese auch merkt. Mein professer meinte, dass wir dies ja mit eienr extra spalte in der tabelle regeln können. Dazu sollen wir checkboxen anlegen.

Seine Idee war es dass einfach jede markierte bzw checkbox aktivierte zeile gelöscht wird.
 
Nun habe ich schon das problem dass ich nicht mehrere Zeilen der Tabelle markieren kann und mein programm sich diese auch merkt. Mein professer meinte, dass wir dies ja mit eienr extra spalte in der tabelle regeln können. Dazu sollen wir checkboxen anlegen.

Ich habe eben nur ganz kurz dein Programm überflogen und gesehen dass du Swing benutzt(JTable), und damit kannst du genau das tun, was du bestreitest.

Erstens: Gibts es die Möglichkeit setSelectionMode(int), damit kannst du drei Mögliche Modi wählen in Form von Konstanten der Klasse ListSelectionModel. Der der dich interessiert ist MULTIPLE_INTERVAL_SELECTION.

Der zweite Schritt ist, dass du dir mit getSelectedRows() ein Array mit den Indizes aller selektieren Zeilen holen kannst. Durch dieses Array kannst du dann mit einer Schleife gehen und alle Zeilen löschen, am besten von hinten beginnend, denn sonst verschieben sich die Zeilen ;)

Gruß
Matt
 
Hallo,

wenn du das mit Checkboxen lösen möchtest, könntest du dir für die CD einen Decorator schreiben. Das heißt eine Klasse, die im Konstruktor eine CD übergeben bekommt. Dieser Decorator stellt die gleichen Methoden zur Verfügung wie die CD und delegiert alle Aufrufe an die CD, dass man über diesen Decorator die Daten der CD abfragen kann. Allerdings kommt noch das Attribut selected dazu mit eigenen Getter und Setter.

Dein TableModel hält dann nicht mehr die Daten, sondern eine Liste der Decorator. So kannst du einfach eine Spalte hinzufügen, die das Attribute selected anzeigt. Dann musst du nur noch im Model für die ColumnClass für diese Spalte Boolean.class zurückgeben. Dann werden automatisch in dieser Spalte Checkboxen dargestellt.

Dann brauchst du nur noch deine Decorator abfragen welche selektiert sind und diese kannst du dann löschen.

Gruß

Sascha
 
Zurück