【发布时间】:2014-11-13 12:03:16
【问题描述】:
我有一个 JTable,它的第一列是一个日期。然而,这实际上不是一个Date 对象,它是一个String,它以英国格式显示日期。下面是我的代码
private class DisplayAllRevenue extends ComponentAdapter
{
@Override
public void componentShown(ComponentEvent e)
{
DefaultTableModel model = (DefaultTableModel) allRevenueTable.getModel();
model.setRowCount(0);
dbConnector = new DBHandler();
dbConnector.makeConnection();
java.sql.Date dateOfLastUpdate=null;
ResultSet portfolioRs = dbConnector.selectAllDetails(getPortfolioData);
try
{
if(portfolioRs.isBeforeFirst()==false)
{
JOptionPane.showMessageDialog(null,"Empty");
}
else
{
while(portfolioRs.next())
{
String provider = portfolioRs.getString("Provider Name");
String client = portfolioRs.getString("Client Name");
int idPortfolio = portfolioRs.getInt("idPortfolio");
dateOfLastUpdate = portfolioRs.getDate("Update_Date");
String dateOfLastUpdateS = getDateInUKFormat(convertSQLDateToJavaDate(dateOfLastUpdate));
Object[]row3 = {dateOfLastUpdateS, provider, client, idPortfolio};
model.addRow(row3);
}
}
//Sort the Table
DefaultRowSorter sorter = ((DefaultRowSorter)allRevenueTable.getRowSorter());
ArrayList list = new ArrayList();
list.add( new RowSorter.SortKey(0, SortOrder.DESCENDING) );
sorter.setSortKeys(list);
sorter.sort();
}
}
catch(SQLException sql)
{
JOptionPane.showMessageDialog(null,"Error displaying data");
sql.printStackTrace();
}
finally
{
dbConnector.closeConnection();
}
}
}
如您所见,我正在尝试按Date 对表格进行排序。但不幸的是,它没有奏效!一切都出了问题。我想知道这是因为Date 实际上是String。
那么,如何根据日期“正确”按表格排序?
【问题讨论】:
-
为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)。硬编码一些数据来替换数据库。
-
@AndrewThompson:我正在使用 Netbeans GUI 构建器。因此,发布自动生成的代码将是一团糟!
-
祝你好运。投票结束。
-
将日期字符串解析为日期对象,或者更好地将它们作为日期对象从数据库中读取。将这些放入您的表格中,然后排序应该起作用。如果日期的出现看起来不合适,请创建一个单元格渲染器来自定义它。
-
@stefan:这就是我知道该怎么做的。
标签: java swing sorting user-interface jtable