RowSorter beim JTable bringt Programm durcheinander

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,
ich habe ein kleines Problem:
Ich habe einen Drag and Drop fähigen Jtable und habe bei diesem aktiviert daswenn man oben auf den spaltenname klickt die spalten sortieren kann.
Desweiteren habe ich in meinem Programm einen Button mit dem man die grade markierte zeile aus dem Jtable löschen kann...nun habe ich jedoch das Problem das wenn ich die Spalten sortiere das löschen durcheinandere kommt...wenn ich eine Zeile markiere wird eine andere Zeile gelöscht(die an dem das element vorher war)
Kann man das Problem irgendwie umgehen?

Hier mal ein paar quelltext ausschnitte

Code:
//Funktion des Delete Buttons
if(DnD.table.getRowCount()==0)
            	{
            		JOptionPane.showMessageDialog(null, "Keine Elemente zum Löschen vorhanden!");
            	}

            	else if(DnD.table.getSelectedRow()==-1)
            	{
            		JOptionPane.showMessageDialog(null, "Wählen Sie Bitte ein Objekt zum Löschen!");
            	}
            	else{
            		
            	DnD.model.removeRow(DnD.table.getSelectedRow());
            	
            	}


Code:
    TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>();
     
     table.setRowSorter( sorter );
    
     sorter.setModel( model );

MFG
 

hdi

Top Contributor
Ahhh so einen Fehler hatte ich auch mal, moment... *workspace durchsuch*

...HAHAHAHA! :lol: Habs gefunden, 1:1 diese Zeile in einem meiner Projekte, mitsamt Kommentar:

Code:
table.setAutoCreateRowSorter(true); // <------- HUSO !!!

So, mal schauen wo war jetz das Problem...

Ah genau, also bei mir war es so, dass ich nach jedem Verändern des Table-Models
(Hinzufügen/Löschen/Zelleninhalte ändern), wieder machen musste:

Code:
table.setAutoCreateRowSorter(true);

Da du scheinbar einen eigenen hast, musst du halt speziell diesen immer neu setzen.

Hoffe das hilft auch bei dir, viel Glück :toll:
 

HoaX

Top Contributor
ich denke ehr dass er TableSorter#convertRowToModelIndex oder so aufrufen will, da ja der angezeigte index nichtmehr mit dem index im model übereinstimmt
 
G

Guest

Gast
@ hdi: deine methode funktioniert leider nicht :(

@Hoax: genau sowas brauche ich...werd mir die funktion mal anschauen
 
G

Guest

Gast
irgendwie komm ich mit der FKt nicht so richtig klar...die Fkt gibt einen Wert zurück,nur was soll ich damit?kann mir wer helfen?

Code:
int test=DnD.table.convertRowIndexToModel(DnD.model.getRowCount()-1);
 

Ebenius

Top Contributor
Anonymous hat gesagt.:
irgendwie komm ich mit der FKt nicht so richtig klar...die Fkt gibt einen Wert zurück,nur was soll ich damit?kann mir wer helfen?

Code:
int test=DnD.table.convertRowIndexToModel(DnD.model.getRowCount()-1);

Die ergibt auch keinen Sinn. In convertRowIndexToModel wirft man einen View-Index rein. Hier wird aber einen Modell-Index übergeben.

In Zeile 14 (oben) brauchst Du die Methode!
Code:
DnD.model.removeRow(convertRowIndexToModel(DnD.table.getSelectedRow()));

Ebenius
 
G

Guest

Gast
hab noch was gefunden was der sorter durcheinandere gebracht hat :(

und zwar beeinträchtigt er auch das DragandDrop in meinem Jtable :(

Code:
static void enableRowDragging() {
        
	table.addMouseMotionListener(new MouseMotionAdapter() {

    @Override
    public void mouseDragged(MouseEvent evt) {
    	rowTo = table.convertRowIndexToModel(table.rowAtPoint(evt.getPoint()));
        if (rowTo != rowFrom && rowTo > -1 && rowTo < model.getRowCount()) {
        	model.moveRow(rowFrom, rowFrom, rowTo);
            rowFrom = rowTo;
            }
        }
    });
    table.addMouseListener(new MouseAdapter() {

    @Override
    public void mousePressed(MouseEvent evt) {
    	rowFrom = table.convertRowIndexToModel(table.rowAtPoint(evt.getPoint()));
        }
    });
}

hier ist jedoch schon ein Indexconverter drinn...aber es geht tritzdem nicht mehr richtig wenn ich ein element verschieben will dann ändert sich mit jedem element was ich nach unten komme die komplette liste(alle elemente springen umher)

kann man das auch noch irgendwie beheben?
 

Ebenius

Top Contributor
Das verstehe ich nicht. Du willst die Zeilen vertauschen bei mouseDragged? Willst Du nicht lieber bei mouseReleased tauschen? Sonst kann das ja nicht funktionieren.

Ebenius
 

Ebenius

Top Contributor
Ich sag doch, es liegt am mouseDragged... Lass Dir doch mal bei mouseDragged per "System.out.println(...)" was ausgeben. Und dann stell Dir for, dass Du bei jedem dieser Events eine Zeile mit der Original-Zeile aus mousePressed vertauschst. Du wirst sehen, dass das keinen Sinn ergeben kann!
 
G

Guest

Gast
ok ich schaus mir mal an...aber wie gesagt ich habe schon das dragged in released geändert gehabt und da ging das drag and drop nicht mehr
 
G

Guest

Gast
also ich hab das teil jetzt mal mit System.out beobachtet

Der Ganze index haut nach dem Sortieren nicht mehr hin
in der Obenren hälfte sind nur ungerade zaheln(1,3,5,7,9 usw) und in der unteren Hälfte sind nur grade zahlen(0,2,4,6,8 usw)
ich müsste also nach dem ordnen den index irgendwie wieder neu schreiben oder irgendsowas
hat da wer ne idee?
 

Ebenius

Top Contributor
Das Problem ist nicht, dass der Index falsch ist, sondern dass Du falsch einfügst. Da bin ich ziemlich sicher. Kannst Du ein kleines kompilierbares Beispiel posten, mit dem ich spielen kann?
 

Ebenius

Top Contributor
[off topic] Nur so zur Info: Wenn Du Dich bei java-forum.org als Nutzer anmeldest, hast Du eigene Dateien in die Du was hochladen kannst, ohne dass Werbung beim Download kommt.
 

Ebenius

Top Contributor
Bis zu Deinem DnD-Problem bin ich bisher noch nicht gekommen...

Hinweise
  1. Keine Umlaute in Java benutzen. Das geht zwar, ist aber Mist, weil es nicht so gut auszutauschen geht. Die Menü.java konnte ich in meinem UTF-8 Linux mit Ark nicht extrahieren... Generell auch im Source-Code möglichst auf ASCII-7bit beschränken. Das erspart Ärger! Danke L-etron-X für die Hilfe beim Entpacken.
  2. Methodennamen und Variablennamen camelCase (erstes Wort klein) schreiben: "dateiEinlesen()", "saveOrCancel"
  3. Code Formatter verwenden; am besten 2 SPC zur Einrückung und Zeilenlänge begrenzen auf 78.
  4. Solche Ausdrücke andersherum, das spart ggf. den Null-Check: cmd.equals("Beenden")"Beenden".equals(cmd)
  5. Unnötige Casts vermeiden. Die Klasse Menü ist ein ActionListener (Bsp. Zeile 19), da muss kein cast hin.
  6. MAIN nicht großschreiben. Da fühle ich mich ja ANGESCHRIEN! Main tut's völlig.
  7. Immer die Software in Packages tun, nie im default package. Wie das geht? Sun Java™ Tutorial: Learning the Java Language: Packages
  8. Entweder Du arbeitest mit Dateien (java.io.File) oder mit URLs (java.net.URL). Beides komisch zu vermischen ist nicht gut: "java.net.URISyntaxException: Illegal character in path at index 8: file:/C:\Dokumente und Einstellungen\Seidemann\Desktop\15-Crusher.wav"
  9. Exceptions nicht nur abfangen sondern auch richtig handhaben (MessageBox), zum Beispiel beim Datei einlesen.
 

HoaX

Top Contributor
Ist es nicht unsinn eine sortierte liste von hand neu sortieren zu wollen? einzige möglichkeit die mir dafür einfällt: daten schon sortiert im model halten und auf TableRowSorter verzichten. Dann is aber auch nixmehr mit auf spaltenname klicken zum sortieren lassen ...
 

Ebenius

Top Contributor
Dein Sortierproblem bekommst Du so gelöst:
Code:
table.addMouseMotionListener(new MouseMotionAdapter() {

  public void mouseDragged(MouseEvent evt) {
    final int viewRowTo = table.rowAtPoint(evt.getPoint());
    if (viewRowTo > -1) {
      final int modelRowFrom = table.convertRowIndexToModel(viewRowFrom);
      final int modelRowTo = table.convertRowIndexToModel(viewRowTo);
      if (modelRowTo != modelRowFrom) {
        model.moveRow(viewRowFrom, viewRowFrom, modelRowTo);
        viewRowFrom = table.convertRowIndexToView(modelRowTo);
        System.out.println(viewRowFrom);
        System.out.println(modelRowTo);
      }
    }
  }
});
table.addMouseListener(new MouseAdapter() {

  @Override
  public void mousePressed(MouseEvent evt) {
    viewRowFrom = table.rowAtPoint(evt.getPoint());
  }
});

Oben musst Du statt rowFrom und rowTo nur das da deklarieren:
Code:
static int viewRowFrom;

Was es Dir aber bring bleibt mir ein Rätsel. Es ergibt nicht wirklich Sinn, die Tabelle händisch umzusortieren, während die Tabelle auch sortiert...

[ edit ] Der Hoax war schneller und hat auch recht. :)

Ebenius
 
G

Guest

Gast
danke für den quellcode,aber damit gets auch nicht :( immer noch das gleiche prob
mir ist aber grade noch was eingefallen wie man es eventuell lösen könnte...ist es möglich den Rowsorter auch wieder auszuschalten?Weil dann könnte man das teil ja einfach sobald man ein element in der liste verschiebt wieder ausschalten
Aso und das das Prog das kann ist von unserem Prof so gewollt :( also das man sortieren kann und dannach wieder per hand ordnen
 

Ebenius

Top Contributor
Anonymous hat gesagt.:
danke für den quellcode,aber damit gets auch nicht :( immer noch das gleiche prob
Dann habe ich Dein Problem wohl falsch verstanden.

Du solltest eventuell auf das Auto-Sorting verzichten und gleich Buttons zum Sortieren des Datenmodells anbieten. Dann bist Du das Problem los. Ausschalten des RowSorters beim Klick hilft nicht. Dann würde ja der Nutzer auf eine Zeile klicken und eigentlich wäre's eine ganz andere, weil die Sortierung wegfällt.
 
G

Guest

Gast
ok dann werd ich wohl auf buttons umsteigen

danke für deine hilfe :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
M Ausgabe beim Overloading Java Basics - Anfänger-Themen 3
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
T DamagedFontException beim drucken Java Basics - Anfänger-Themen 3
Z SNAKE Schlange beim Aufheben von Essen verlängern Java Basics - Anfänger-Themen 4
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
S Fehler beim Programm Java Basics - Anfänger-Themen 2
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
I InputStream beim zweiten Mal fehlerhaft Java Basics - Anfänger-Themen 10
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
J Hilfe beim Label animieren Java Basics - Anfänger-Themen 1
Avalon Programmierstil beim Mocken Java Basics - Anfänger-Themen 45
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
J Hilfe beim verstehen Java Basics - Anfänger-Themen 3
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Bluedaishi Hilfe beim erklären dieser Methode Java Basics - Anfänger-Themen 5
E Macht Java Rechenfehler beim Potenzieren und Mod? Java Basics - Anfänger-Themen 5
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
L Kleine Hilfe beim Schreiben eines Programmes benötigt :D Java Basics - Anfänger-Themen 40
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
V Wie wiederhole ich eine for-Schleife beim erreichen eines Wertes Java Basics - Anfänger-Themen 9
W Hilfe beim Chat Programm Java Basics - Anfänger-Themen 14
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
R String index out of range: -1 beim Datei Parsen Java Basics - Anfänger-Themen 15
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
S switch case fängt beim letzten case an Java Basics - Anfänger-Themen 6
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
der_Schokomuffin Hilfe gesucht beim Thema Objekte übergeben! Java Basics - Anfänger-Themen 2
A Pendeltouren beim Savings erfahren "schummeln" in Ordnung? Java Basics - Anfänger-Themen 1
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
T Fehlermeldung beim Starten von FlashTool Java Basics - Anfänger-Themen 27
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
J Hilfe beim Runden Java Basics - Anfänger-Themen 4
C Erste Schritte ArrayIndexOutOfBoundsException beim Speichern im Array Java Basics - Anfänger-Themen 2
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
L Fehler beim laden eines Icons Java Basics - Anfänger-Themen 3
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
R Methoden NPE beim Aufruf einer Methode einer anderen Klasse Java Basics - Anfänger-Themen 4
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
D Könnt ihr mir helfen beim Programmieren eines Ping Pong Spieles? Java Basics - Anfänger-Themen 9
N Fehlermeldung beim ausführen des Programmes.. Java Basics - Anfänger-Themen 3
K Classpath RXTX beim Raspberry Java Basics - Anfänger-Themen 5
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
B Datentypen Welcher Typ wird beim Casten übernommen? Java Basics - Anfänger-Themen 12
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
J Klassen HashSet, TreeSet: unregelmäßige Zahlenreihen beim Befüllen Java Basics - Anfänger-Themen 7
V Erste Schritte Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben