Проблема в настройке цвета фона для моего TreeCellRenderer - PullRequest
1 голос
/ 15 марта 2010

Привет, я создал свой собственный рендер. Я хочу, чтобы фон был синим. Я также установил синий цвет фона. Но я не знаю, в чем проблема, что цвет фона моего рендерера всегда кажется белым.

У меня есть пост код. помогите пожалуйста, где я не прав, чтобы цвет фона стал белым.

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;
}

}

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Трудно сказать, не видя остальной код.

Полагаю, что средство рендеринга делегата, скорее всего, содержит непрозрачный компонент на белом фоне Код устанавливает только синий цвет рендеринга, компоненты, содержащиеся в рендерере (если они есть) не корректируются с помощью приведенного выше кода.

0 голосов
/ 15 марта 2010

У вас нет никаких исключений? И вы уверены, что ваш getTreeCellRendererComponent метод вызывается хотя бы один?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...