【发布时间】:2015-12-10 19:50:20
【问题描述】:
我开发了下面列出的代码,它没有将行的颜色设置为黄色,从数据库表中检索到的相关时间戳值大于 1.5 秒(1500 毫秒)上一行。我将只提供代码的核心内容,让您不必查看所有行,例如调试输出、日志记录异常等。
private void processQueryResults(ResultSet results){
Vector<Vector<String>> resultRows = new Vector<Vector<String>>();
Vector<String> resultRowVector = null;
Vector<Timestamp> timestampVectors = null;
resultRows.clear();
if (results != null){
timestampVectors = new Vector<Timestamp>();
While (results.next()){
resultRowVector = new Vector<String>();
timestampVectors.add(results.getTimestamp("timestamp_column");
resultRowVector.add(results.getString("columnA");
resultRowVector.add(results.getString("columnB");
.....
.....
resultRows.add(resultRowVector);
}
JTable displayTable =
highlightResultRows(new DefaultTableModel(resultRows, colHdrs),
timestampVectors);
displayTable.setPreferredScrollableViewportSize(new Dimension(900,500));
......
......
}
private JTable highlightResultRows(DefaultTableModel model,
final Vector<Timestamp> timestamps){
Timestamp previousTimestamp = null;
JTable highlightedTable = new JTable(model){
private static final long serialVersionUID = 1L;
public Component prepareRenderer(TableCellRenderer renderer, int row, int col){
Component comp = super.prepareRenderer(renderer, row, col);
if (previousTimestamp != null){
if (previousTimestamp.getTime() < (timestamps.get(row).getTime() - 1500)){
comp.setBackground(Color.YELLOW);
}
else
{
comp.setBackground(Color.BLUE);
}
}
else
{
comp.setBackground(Color.BLUE);
}
previousTimestamp = timestamps.get(row);
System.out.println("previousTimestamp: [" + previousTimestamp.getTime() + "]");
return comp;
}
};
return highlightedTable;
}
我知道没有发生的是prepareRenderer() 方法中的逻辑没有执行,因为debus System.out.println 显示previousTimestamp 设置的内容没有被输出。此外,所有行都设置为蓝色背景色。
【问题讨论】:
-
“我将只提供代码的核心内容,让您不必查看所有行” 为了尽快获得更好的帮助,请发布 minimal reproducible example 或 Short, Self Contained, Correct Example .
-
Andrew 我提供了我认为帮助解决此问题所需的最少代码。提供的代码是我觉得作为软件工程师可能需要提供解决方案的需要。明显的问题是方法highlghtResultRows,它是按书面形式完整提供的。我提供了生成此方法的输入参数的代码子集。不是 100% 确定还需要什么。
-
“安德鲁,我提供了我认为帮助解决此问题所需的最少代码”判断是否包含相关代码。 OTOH,我链接到了一个文档,该文档的作者为新手解决了许多问题,并且知道当包含可运行代码时,提供帮助会变得多么容易。但是,嘿,这是你的问题,所以你可以随心所欲地处理它。我只会投票关闭。祝你好运!