【发布时间】:2015-01-13 23:22:09
【问题描述】:
我正在使用 JXTable 来显示、过滤和排序一些数据。但是,我在排序时遇到了一些意外行为。如您所见,这些值并未按预期升序,而是按字符串的排序方式排序。
为了解决 cmets,我确信在代码的正确部分(即 Float.valueOf() 块)中解析了此列。我通过调试知道这一点。此外,我通过单击 jxtable 的标题对列进行排序。我不是以编程方式进行的。
为了清楚起见,我将它们添加为浮点数:
class FantasyProTableModel extends DefaultTableModel
{
void loadData() throws BiffException, IOException
{
Workbook workbook = Workbook.getWorkbook(new File("Input.xls"));
Sheet sheet = workbook.getSheet(0);
int numCols = sheet.getColumns();
for(int col=0;col<numCols;col++)
{
addColumn(sheet.getCell(col,0).getContents());
}
for(int rownum=1;rownum<sheet.getRows();rownum++)
{
Object[] row = new Object[numCols];
for(int col=0;col<numCols;col++)
{
try
{
row[col] = Float.valueOf(sheet.getCell(col,rownum).getContents());
//parseFloat() doesn't work either
}
catch(NumberFormatException e)
{
row[col] = sheet.getCell(col,rownum).getContents();
}
}
addRow(row);
}
workbook.close();
}
}
我该怎么做才能让它按值按正确的升序排序?
【问题讨论】:
-
你能提供
TableModel吗?他们似乎被视为String... -
@MadProgrammer 已更新。我原本拥有的是它的身体。这是该类中唯一的函数。
-
在你的catch子句中添加debug语句,确保值被正确解析...
-
我已经这样做了(如问题中所述)。他们是。我假设它们被排序为通用对象而不是浮点数。
-
您是如何对表格进行排序的?考虑提供一个runnable example 来证明您的问题。这将导致更少的混乱和更好的响应
标签: java swing sorting swingx jxtable