JTable sortieren und löschen

KleenEule

Grünschnabel
Hey Leute ich habe ein Problem.
Ich zeige euch erstmal die Methode zum Löschen:

Code:
	private void jbtn_loeschenActionPerformed(ActionEvent evt) {
		int row = jtbl1.getSelectedRow();
		jtbl1.clearSelection();
		if(JOptionPane.showConfirmDialog(this,
		        "Möchten Sie " + jtbl1.getValueAt(row,0) + " wirklich löschen?", "Schüler löschen", 
		        JOptionPane.YES_NO_OPTION)
		     == JOptionPane.YES_OPTION)
		{
			DefaultTableModel table = (DefaultTableModel)jtbl1.getModel();
			for(Student student : masterOfPuppets.database.getStudents()){
				if(student.toString().equals(jtbl1.getValueAt(row,0))){
					if(student.getDateOfBirthString().equals(jtbl1.getValueAt(row, 3))){
						System.out.println(student.toString());
						masterOfPuppets.database.removeStudent(student);
						break;
					}
				}
			}
			table.removeRow(row);
		}
	}

Zeile 10-18 sind eher uninteressant für das löschen. Zur Erklärung: Wir haben eine Database in der die Daten, die in der Tabelle stehen, gespeichert sind. Zeile 10-18 sind nur dazu da, den Inhalt der Tabelle auch aus der Datenbank zu löschen.

Im Normalfall funktioniert das löschen einwandfrei. Sobald ich nun aber die Tabelle sortiere, dann löscht der aber nicht mehr den, den ich anklicke sondern ganz zufällig -.-
Weiß jemand warum****?

Ich hab es sowohl mal mit AutoCreateRowSorter versucht und einmal so, das er von Anfang an direkt selber sortiert:
Code:
			TableRowSorter sorter = (TableRowSorter) jtbl1.getRowSorter();
			sorter = new TableRowSorter<DefaultTableModel>(table);
			List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
			sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
			sorter.setSortKeys(sortKeys);
			jtbl1 = new JTable(table);
			jtbl1.setRowSorter(sorter);

Naja egal auf welche weise ich es mache, löschen tut er danach nicht mehr wie er es soll. weiß jemand warum?
 
Hi,

Ist im Grunde recht simpel. Dir wird was anderes angezeigt, als "hinter dem GUI" in der JTable aufgebaut ist. Das Problem hatt ich auch mal und ich hab's damals folgendermaßen behoben.
Du musst GUI und Model wieder zusammenführen, das geht mit dieser Methode:
Java:
table.convertRowIndexToModel( reihe );
Damit erhältst du den Integer-Wert der Reihe, die du ausgewählt hast, im Model.

Gruß,
Martin
 

Neue Beiträge

Zurück