2013-10-05, 19:26
  #1
Medlem
binics avatar
S hr ser det ut om tabellen har 12 rader och jag vljer att sortera p frsta kolumnen (Nr):

|Nr|Namn|Efternamn
|1 | Jan |Svensson
|10 | Jan |Svensson
|11 | Jan |Svensson
|12 | Jan |Svensson
|2 | Jan |Svensson
|3 | Jan |Svensson
|4 | Jan |Svensson
...
|9 | Jan |Svensson

Som ni ser gr den frn 1 direkt till 10, vilket blir helt fel. Nr ovan r en int. Det enda jag stllt in fr sortering r:
Kod:
getTable().setAutoCreateRowSorter(true); 

Jag antar att den sorterar efter vrdet i frsta positionen (1 och 10 tex) och inte hela talet. Hur kommer jag runt detta?
Citera
2013-10-05, 19:31
  #2
Medlem
Ser ut som den sorterar som text.
Citera
2013-10-05, 19:51
  #3
Medlem
binics avatar
Citat:
Ursprungligen postat av alef-noll
Ser ut som den sorterar som text.

Hmm. Sjlva headern r av typen String men innehllet i varje rad dr kolumnen r "Nr" r av int.

Kod:
private static String[] scColumns = {
            
"Nr",
            
"Namn",
            
"Efternamn"
    
};

    private static 
Object[][] scResults = {};
    public static 
DefaultTableModel tblModel = new DefaultTableModel(scResults,scColumns); 
Jag har en for loop som sedan lgger till raderna i tabellen:
Kod:
Object[] obj = {
        
counterValue+1
        
strName
        
strLName
    
};

tblModel.addRow(obj); 
Citera
2013-10-05, 20:47
  #4
Medlem
binics avatar
Lste det. S hr sger dokumentationen:

Citat:
Warning: DefaultTableModel returns a column class of Object. When DefaultTableModel is used with a TableRowSorter this will result in extensive use of toString, which for non-String data types is expensive. If you use DefaultTableModel with a TableRowSorter you are strongly encouraged to override getColumnClass to return the appropriate type.

Tydligen s omvandlas vrdena till strngar vilket gr att sorteringen blir helt fel. Jag la till fljande i min kod:

Kod:
public static DefaultTableModel tblModel = new DefaultTableModel(scResults,scColumns) {
        @
Override
        
public Class getColumnClass(int column) {
            if(
column==0)
                return 
Integer.class;
            else
                return 
String.class;
         }
    }; 

Tack alef-noll
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in