【发布时间】:2011-01-19 23:25:01
【问题描述】:
我创建了一个以下渲染器,它使用复选框渲染 JTree,我想为不同的节点添加不同的颜色和图标。我该怎么做?请帮我。提前谢谢你。
class CheckTreeCellRenderer extends JPanel implements TreeCellRenderer {
private CheckTreeSelectionModel selectionModel;
private TreeCellRenderer 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(TreeCellRenderer delegate, CheckTreeSelectionModel selectionModel) {
this.delegate = delegate;
this.selectionModel = selectionModel;
setLayout(new BorderLayout());
setOpaque(false);
checkBox.setState(Boolean.TRUE);
revalidate();
checkBox.setOpaque(false);
}
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);
}
}
setBackground(Color.pink);
removeAll();
add(checkBox, BorderLayout.WEST);
add(renderer, BorderLayout.CENTER);
return this;
}
}
【问题讨论】:
-
我已经多次回答同一个问题,我想我会通过这个。
-
那为什么还要评论呢?相反,投票关闭并引用重复的答案。至少这样 OP 可以引用重复的问题。
-
您好,朋友,对不起。我想我问了一个重复的问题。其实我不知道在哪里寻找同样的问题。如果已经回答,请告诉我在哪里可以得到它。我请求你帮助我。