我有一个jtable。(表格摘要)。其中一列是EXPIRY。我想用当前日期已经过期的客户端突出显示该行。
我已经掌握了逻辑,但是我无法使行变成红色或任何其他颜色。这是我的代码:
int count = (tableSummary.getRowCount()); NumberFormat formatter = new DecimalFormat("###,###"); String no = formatter.format(count); txtNo.setText(no); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); String expDateString = sdf.format(cal.getTime()).toString(); for(int i=0; i<=tableSummary.getRowCount()-1; i++){ String nnn= tableSummary.getModel().getValueAt(i, 6).toString(); System.out.println(nnn); int res = nnn.compareTo(expDateString); if(res>=0){ System.out.println("if ni " + (res>=0)); } else{ System.out.println("else ni" + (res>=0)); rowrenderer.setBackground(Color.RED); } }
谁能帮我这个?因为它是我界面的主要亮点之一。提前致谢 !!:)
在以下链接中,您可以找到要执行的操作的示例:http : //www.roseindia.net/java/example/java/swing/SadingRows.shtml
您必须改写并在返回的prepareRenderer()上JTable添加backgroundColor Component。
prepareRenderer()
JTable
Component
PS:为以后参考,如果您包含更多代码,将会更容易。您的rowrenderer= 的定义
rowrenderer
编辑
代替您的常规JTable table = new JTable(model)声明,请使用以下命令(prepareRenderer如果您需要其他颜色,请更改方法中的逻辑):
JTable table = new JTable(model)
prepareRenderer
JTable table = new JTable(model) { public Component prepareRenderer(TableCellRenderer renderer, int Index_row, int Index_col) { // get the current row Component comp = super.prepareRenderer(renderer, Index_row, Index_col); // even index, not selected if (Index_row % 2 == 0 && !isCellSelected(Index_row, Index_col)) { comp.setBackground(Color.lightGray); } else { comp.setBackground(Color.white); } return comp; } };