简体   繁体   中英

i'm trying to change row color based on cell value

i'm trying to change row color based on cell valueand this is my code

this is the connection of the database to show it in a jtable

import java.sql.*;
import javax.swing.table.DefaultTableModel;
import net.proteanit.sql.DbUtils;
import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import java.awt.Color;
import java.awt.Component;
  public class Rechercher extends javax.swing.JFrame {
 Statement stmt;
 connexion maconnexion = new connexion();
  ResultSet Rs;
    PreparedStatement  ps =null;
   Connection conn = null;
   DefaultTableModel model=new DefaultTableModel();
  public Rechercher() {
    initComponents();                  
   model.addColumn("Code Piece");
   model.addColumn("Reference");
   model.addColumn("Nom");
   model.addColumn("Marque");
   model.addColumn("Dimention");
   model.addColumn("Quantite");
   model.addColumn("Categorie");
   model.addColumn("Type");
   model.addColumn("Discription");
   model.addColumn("Famille");
    model.addColumn("Sous Famille");
     try {
    stmt=maconnexion.Obtenirconnexion().createStatement();
     ResultSet Rs=stmt.executeQuery("Select 
     piece.*,famille.Nom_F,sousfamille.Nom_SF from piece left join famille 
     ON famille.Code_Piece=piece.Code_Piece left join sousfamille on 
     sousfamille.Code_Piece = piece.Code_Piece order by Code_Piece");
     while(Rs.next()){
      model.addRow(new Object[]
      {Rs.getString("Code_Piece"),Rs.getString("Reference"),
      Rs.getString("Nom_P"),
      Rs.getString("Mark_P"),Rs.getString("Dimention") 
      ,Rs.getString("Quantite"),Rs.getString("Categorie"),
       Rs.getString("Type"),Rs.getString("Discription"),
       Rs.getString("Nom_F"),Rs.getString("Nom_SF")}); }
           }catch(Exception e){System.err.println(e);}
       jRech.setModel(model);     
       jRech.setAutoCreateRowSorter(true); }  

and this is what i use to change the color of the cell depend on a value the problem is "Component c" there is an error ther says "cannot find symbol"

           public Component prepareRenderer (TableCellRenderer renderer, int 
       rowIndex, int columnIndex){
      Component c = super.prepareRenderer(renderer, rowIndex, columnIndex);
      Object value = jRech.getModel().getValueAt(rowIndex,columnIndex);
       if(columnIndex == 6){
        if(value.equals("0"))
        {
            c.setBackground(Color.GREEN);
            c.setForeground(Color.BLACK);     
        }}return c;
        } 

you can do like this:

 public static void setOneRowBackgroundColor(JTable table, int rowIndex,  
            Color color) {  
        try {  
            DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {  

                public Component getTableCellRendererComponent(JTable table,  
                        Object value, boolean isSelected, boolean hasFocus,  
                        int row, int column) {  
                    if (row == rowIndex) {  
                        setBackground(color);  
                        setForeground(Color.WHITE);  
                    }else if(row > rowIndex){  
                        setBackground(Color.BLACK);  
                        setForeground(Color.WHITE);  
                    }else{  
                        setBackground(Color.BLACK);  
                        setForeground(Color.WHITE);  
                    }  

                    return super.getTableCellRendererComponent(table, value,  
                            isSelected, hasFocus, row, column);  
                }  
            };  
            int columnCount = table.getColumnCount();  
            for (int i = 0; i < columnCount; i++) {  
                table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);  
            }  
        } catch (Exception ex) {  
            ex.printStackTrace();  
        }  
    }  

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM