2010-03-15 5 views
1

Salut, j'ai créé mon propre moteur de rendu. Je veux que le fond soit bleu. J'ai mis la couleur de fond aussi bleu. Mais je ne sais pas quel est le problème que la couleur de fond de mon moteur de rendu semble toujours être blanche.Problème lors de la définition de la couleur d'arrière-plan dans mon TreeCellRenderer

J'ai posté le code. s'il vous plaît aidez là où je me trompe pour que la couleur de fond devienne blanche.

class CheckTreeCellRenderer extends JPanel implements TreeCellRenderer { 

private CheckTreeSelectionModel selectionModel; 
private MyRenderer delegate; 
private TristateCheckBox checkBox = new TristateCheckBox("", null, true); 
public static final State NOT_SELECTED = new State(); 
public static final State SELECTED = new State(); 
public static final State DONT_CARE = new State(); 

public CheckTreeCellRenderer(MyRenderer delegate, CheckTreeSelectionModel selectionModel) { 
    this.delegate = delegate; 

    this.selectionModel = selectionModel; 
    setLayout(new BorderLayout()); 
    setOpaque(true); 
    setBackground(new Color(207, 219, 234)); 
    checkBox.setState(Boolean.TRUE); 

    checkBox.setOpaque(true); 
    checkBox.setBackground(new Color(207, 219, 234)); 
} 

public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, 
     boolean leaf, int row, boolean hasFocus) { 
    Component renderer = delegate.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); 


    TreePath path = tree.getPathForRow(row); 

    if (path != null) { 
     if (selectionModel.isPathSelected(path, true)) { 
      checkBox.setState(Boolean.TRUE); 
     } else { 
      checkBox.setState(selectionModel.isPartiallySelected(path) ? null : Boolean.FALSE); 
     } 
    } 

    renderer.setBackground(new Color(207, 219, 234)); 
    tree.setOpaque(true); 
    tree.setBackground(new Color(207, 219, 234)); 
    this.setOpaque(true); 
    this.setBackground(new Color(207, 219, 234)); 

    add(checkBox, BorderLayout.WEST); 
    add(renderer, BorderLayout.CENTER); 

    return this; 
} 

}

+0

S'il vous plaît, pensez à publier un SSCCE –

Répondre

0

Ne vous avez une exception soulevée? Et êtes-vous sûr que votre méthode getTreeCellRendererComponent est appelée au moins une?

+0

Non, je n'ai pas reçu d'exception –

+0

Et avez-vous vérifié que la méthode est correctement appelée? – Riduidel

+0

J'ai vérifié que la méthode est correctement appelée –

1

Difficile à dire sans voir le reste du code.

Je suppose que le moteur de rendu du délégué contient probablement un composant opaque avec un arrière-plan blanc. Le code ne définit que le rendu bleu, les composants contenus dans les moteurs de rendu (s'il en existe) ne sont pas ajustés par le code ci-dessus.

Questions connexes