Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTable对顶部的空单元格进行升序排序_Java_Swing_Sorting_Jtable - Fatal编程技术网

Java JTable对顶部的空单元格进行升序排序

Java JTable对顶部的空单元格进行升序排序,java,swing,sorting,jtable,Java,Swing,Sorting,Jtable,当我单击列标题以升序排序时,如何使JTable中的空单元格显示在具有值的单元格下方。现在,空单元格显示在单元格上方,其中包含数字1和2 TableRowSorter<TableModel> tableRowSorter = new TableRowSorter<TableModel>(spreadsheetModel) { Comparator<Object> comparator = new Comparator<Object>()

当我单击列标题以升序排序时,如何使JTable中的空单元格显示在具有值的单元格下方。现在,空单元格显示在单元格上方,其中包含数字1和2

TableRowSorter<TableModel> tableRowSorter = new TableRowSorter<TableModel>(spreadsheetModel)
{
    Comparator<Object> comparator = new Comparator<Object>()  
    {  
        public int compare(Object o1, Object o2) 
        {  
            try
            {           
                Double d1 = Double.parseDouble(o1.toString());  
                Double d2 = Double.parseDouble(o2.toString());  
                return d1.compareTo(d2);  
            } 
            catch (NumberFormatException numberFormatException) 
            {  
                try 
                {  
                    Integer i1 = Integer.parseInt(o1.toString());  
                    Integer i2 = Integer.parseInt(o2.toString());  
                    return i1.compareTo(i2);  
                } 
                catch (Exception e) 
                {  
                    return o1.toString().compareTo(o2.toString());  
                }  
            }


        }  
    };

    public Comparator getComparator(int column)  
    {  
        return comparator;  
    };  
};                      

for(int i = 0; i < table.getColumnCount(); i++)
    tableRowSorter.setComparator(i, tableRowSorter.getComparator(i));

tableRowSorter.setSortKeys(null);
table.setRowSorter(tableRowSorter);
table.setAutoCreateRowSorter(false);
TableRowSorter TableRowSorter=新的TableRowSorter(电子表格型号)
{
比较器比较器=新比较器()
{  
公共整数比较(对象o1、对象o2)
{  
尝试
{           
Double d1=Double.parseDouble(o1.toString());
Double d2=Double.parseDouble(o2.toString());
返回d1。比较(d2);
} 
捕获(NumberFormatException NumberFormatException)
{  
尝试
{  
整数i1=Integer.parseInt(o1.toString());
整数i2=Integer.parseInt(o2.toString());
返回i1。比较(i2);
} 
捕获(例外e)
{  
返回o1.toString().compareTo(o2.toString());
}  
}
}  
};
公共比较器getComparator(int列)
{  
返回比较器;
};  
};                      
对于(int i=0;i
在进行比较之前,您可以检查空值。比如:

// Handle sorting of null values

if (o1 == null && o2 == null) return 0;

if (o1 == null) return 1;

if (o2 == null) return -1;

在比较之前,我尝试将其添加到比较器中,但空单元格仍然显示在顶部。比较器看不到空值。@stevetronix,请发布您的演示。