解答: 我不允许发布答案......赞成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-database中获取数据。有一个名为“ActionPoint”的日期。现在我想将每一行标记为“ActionPoint”等于今天的每一行都比现在“更小”。
我的代码今天与我的jTable中的“行动点”进行了比较:
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的声望才能发布图片-.-
答案 0 :(得分:0)
我想将每一行标记为红色,其中&#34; ActionPoint&#34;等于今天奥德是&#34;更小&#34;比今天。
查看Table Row Rendering以获得解决此问题的简便方法。该方法会覆盖JTable的prepareRenderer(...)
方法,因此您可以使用简单的&#34; if语句在#c;中添加逻辑。