【发布时间】:2015-04-24 23:11:02
【问题描述】:
回答: 我不允许发布答案...竖起大拇指stackoverflow!!!
但这里是:
天哪……
我做到了,实际上它比我想象的要容易......
这是我的解决方案:
tbl_needaction = new javax.swing.JTable()
{
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Date d = new Date();
DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
java.util.Date acdate = null;
Component c = super.prepareRenderer(renderer, row, column);
// Color row based on a cell value
if (!isRowSelected(row))
{
c.setBackground(getBackground());
int modelRow = convertRowIndexToModel(row);
String sd = "";
sd = (String)getModel().getValueAt(modelRow, 5);
try {
acdate = df.parse(sd);
} catch (ParseException ex) {
Logger.getLogger(EditApplicationJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
if (d.compareTo(acdate)>=0){
c.setBackground(Color.RED);
}
}
return c;
}
};
我必须通过 NotePad++ 编辑它,因为 NetBeans 不允许我编辑自动生成的 initComponents()。
问题: 我知道,有很多关于这个问题的示例和教程,但它们似乎都不适合我......
我正在从我在 JTable 中显示的 sql 数据库中获取数据。有一个日期叫做“ActionPoint”。现在我想将“ActionPoint”等于今天或“小于”今天的每一行标记为红色。
我的代码今天与我的 jTable 中的 ebery 行的“ActionPoint”进行比较:
for(int row = 0;row < dbApplicantsTableModel.getRowCount();row++) {
String sd = "";
sd = (String) dbApplicantsTableModel.getValueAt(row, 5);
try {
acdate = df.parse(sd);
} catch (ParseException ex) {
Logger.getLogger(EditApplicationJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
if (acdate.compareTo(d)<=0){
}
}
所以我应该有我的“行”,现在应该涂成红色。
谁能提供一个简单地获取一行,然后将这一行的背景设置为红色的方法?
编辑:
现在我的代码如下所示:
for(int row = 0;row < dbApplicantsTableModel.getRowCount();row++) {
String sd = "";
sd = (String) dbApplicantsTableModel.getValueAt(row, 5);
try {
acdate = df.parse(sd);
} catch (ParseException ex) {
Logger.getLogger(EditApplicationJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
if (acdate.compareTo(d)<=0){
dbApplicantsTableModel.setRowColour(row, Color.RED);
}
但我没有将任何背景设置为红色!
遗憾的是,我需要 10 的声望才能发布图片 -.-
【问题讨论】:
-
使用表格单元格渲染器
-
尝试写一个
TableCellRenderer。如果您遇到问题,可能会有人帮助您。
标签: java swing colors jtable row