JTable ligne de couleur en fonction de la Valeur dans le modèle?

J'ai ce code dans mon modèle de Table:

public class DocumentProjectTableModel extends AbstractTableModel{

    private List<MyDocument> myDocuments;
    public String getValueAt(int row, int column) {
            String toReturn = null;
            MyDocument myDocument = myDocuments.get(row);
            SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");

            switch (column) {
                case 0:
                    if(myDocument.getProject().getRegDate()!=null) toReturn = format.format(myDocument.getProject().getRegDate());
                    break;
                case 1:
                    toReturn = myDocument.getProject().getRegNum();
                    break;
                case 2:
                    toReturn = myDocument.getProject().getDescription();
                    break;
                case 3:
                    toReturn = myDocument.getProject().getShortName();
                    break;
                case 4:
                    toReturn = myDocument.getProject().getSecondName()+myDocument.getProject().getFirstName()+myDocument.getProject().getMiddleName();
                    break;

            }
            return toReturn;
        }
// some other stuff is not shown

Je veux changer la couleur d'arrière-plan de chaque ligne, par exemple si myDocument.getIsRegistered() == true, je veux cette ligne pour avoir fond jaune, si myDocument.getIsValid == false ligne est bleu et ainsi de suite.

J'ai trouvé des exemples que changer la couleur des lignes en fonction de valeurs dans la JTable. Mais getIsValid et getIsRegistered() ne sont pas affichés, ils n'existent que dans le modèle. Des conseils ou de l'exemple serait très utile. merci à l'avance.

mise à jour. mon TableCellRenderer:

public class MyTableCellRenderer extends JLabel implements TableCellRenderer {

    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
        String actualValue = (String) value;
        //Set the colors as per the value in the cell...
        if(actualValue.equals("lifesucks") ){
            setBackground(Color.YELLOW);
        }
        return this;
    }
}

à l'aide de moteur de rendu:

            int vColIndex = 0;
            TableColumn col = resultTable.getColumnModel().getColumn(vColIndex);
            col.setCellRenderer(new MyTableCellRenderer());
 resultTable.setModel(new DocumentProjectTableModel(docs));

tableau est indiqué comme d'habitude pas de couleur jaune. pourquoi?

update2.

resultTable=new JTable(new DocumentProjectTableModel(docs)){
            public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
            {
                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 type = (String) getModel().getValueAt(modelRow, 0);

                        c.setBackground(Color.GREEN);
                }
                return c;
            }
        };

table est vide:(

les chances sont que votre moteur de rendu n'est pas utilisé - il est défini par la colonne, puis définissez le modèle. Par défaut les colonnes sont re-créé sur setModel (ou de la réception d'un structureChanged) perdant ainsi toutes les config
merci pour le tuyau. Mais lorsque j'appelle le moteur de rendu?

OriginalL'auteur bunnyjesse112 | 2011-11-15