一尘不染

如果使用Java满足特定条件,如何将颜色设置为特定行?

java

我有一个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);


                    }                        
            }

谁能帮我这个?因为它是我界面的主要亮点之一。提前致谢 !!:)


阅读 241

收藏
2020-09-08

共1个答案

一尘不染

在以下链接中,您可以找到要执行的操作的示例:http
:
//www.roseindia.net/java/example/java/swing/SadingRows.shtml

您必须改写并在返回的prepareRenderer()JTable添加backgroundColor Component

PS:为以后参考,如果您包含更多代码,将会更容易。您的rowrenderer= 的定义

编辑

代替您的常规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;
    }
};
2020-09-08