tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1962
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von darkmagic2002
    darkmagic2002 darkmagic2002 ist offline Mitglied Bronze
    Registriert seit
    Jan 2009
    Beiträge
    33
    Hallo,
    es mag einfach nicht funktionieren:
    Immer wenn ich die JTable filtern oder sortieren lasse, kann ich nicht die Zellen löschen, die ich löschen will, weil ich dazu die Methode
    Code :
    1
    
    getSelectedRows()
    benutze, welche die Zellennummern der unsortierten und ungefilterten Tabelle liefert, also quasi wie vor dem Sortieren oder Filtern.

    Nun meine Frage:
    Wie kann ich dann die aktuell selektierten Werte bekommen, die also auch das Aussortieren/Filtern berücksichtigen, weil sich ja dadurch die Zellennummern ändern

    Ein ähnlicher Fall schon hier: http://www.tutorials.de/forum/java/2...lectedrow.html

    Für eine Antwort wäre ich dankbar,
    viele Grüße,
    Kevin
     

  2. #2
    Flo[H] Flo[H] ist offline Mitglied Brokat
    Registriert seit
    Aug 2002
    Beiträge
    399
    Hallo!
    Ich nehme an du verwendest einen TableRowSorter zum sortieren deiner JTable. Da solltest du dir mal die Methode convertRowIndexToModel. Der übergibst du eine Zeilennummer aus dem View und bekommst die entsprechende Zeilennummer aus dem Model zurück.

    Hab das selber schonmal benötigt:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    fileTable.getSelectionModel().addListSelectionListener(new ListSelectionListener()
    {
        public void valueChanged(ListSelectionEvent e)
        {
            final ListSelectionModel lsm = (ListSelectionModel)e.getSource();
            
            if (lsm.isSelectionEmpty()) 
            {
                // no selected rows
            } 
            else 
            {
                final int minIndex = lsm.getMinSelectionIndex();
                final int maxIndex = lsm.getMaxSelectionIndex();
        
                final ArrayList<Integer> indices = new ArrayList<Integer>();
                        
                for (int i = minIndex; i <= maxIndex; i++) 
                {
                    if(lsm.isSelectedIndex(i)) 
                    {
                        indices.add(fileTable.getRowSorter().convertRowIndexToModel(i));
                    }
                }
                 // [...]
            }
        }
    });

    mfg flo
     
    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
    -Rich Cook

  3. #3
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Ich verstehe was du meinst, aber trotzdem wäre ein lauffähiges Codebeispiel ganz schön, an welchem sich die Problematik nachvollziehen lässt.

    Schau mal hier zu Thema sortieren: http://java.sun.com/docs/books/tutor...nts/table.html

    Es gibt convert... Methoden im JTable mit denen zu zwischen Model und View konvertieren kannst.
     

  4. #4
    Avatar von darkmagic2002
    darkmagic2002 darkmagic2002 ist offline Mitglied Bronze
    Registriert seit
    Jan 2009
    Beiträge
    33
    Hey,
    vielen Dank!! Genau die Methode
    Code :
    1
    
    convertRowIndexToModel()
    habe ich gebraucht.
    Entschuldige, dass ich kein Beispiel geliefert habe. Im Prinzip ist es nur, den Wert der o.g. Methode der
    Code :
    1
    
    removeRow(int)
    -Methode des Models zu übergeben:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    
    int[] positions = table.getSelectedRows();
                    //reverse array "positions[]"
     
                    for (int i = 0; i < positions.length; i++)
                    {
                        table.getModel().removeRow(table.convertRowIndexToModel(positions[i]));
                    }

    Nun funktioniert das auch!
    Grüße,
    kevin
     

Ähnliche Themen

  1. datiehandling filtern und sortieren
    Von 3Cyb3r im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 29.05.08, 19:34
  2. Antworten: 0
    Letzter Beitrag: 06.07.07, 17:38
  3. Day CQ - ArrayList sortieren und filtern
    Von aquasonic im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 22.12.06, 15:49
  4. erst filtern dann werte addieren
    Von MatthiasRedmann im Forum Relationale Datenbanksysteme
    Antworten: 16
    Letzter Beitrag: 12.10.06, 09:24
  5. JTable Column (Spalten ausblenden/filtern?)
    Von sportingt im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 10.11.05, 10:15

Stichworte