我有一个Jtree
,我需要删除某个节点上的突出显示效果。
所以,现在我有了alla节点
我希望在某个节点上有这个:
我怎样才能做到这一点? 感谢
答案 0 :(得分:0)
你能不能使用这样的东西?不确定实用性而未经过测试
tree.addMouseListener (new MouseAdapter (){
public void mousePressed ( MouseEvent e ){
// Check for right click
if (SwingUtilities.isRightMouseButton(e)){
int selection[] = tree.getSelectionRows();
for(int i=0; i< selection.size; i++){
tree.removeSelectionInterval(selection[i], selection[i]);
}
}
}
答案 1 :(得分:0)
- 首先: 您需要使用以下方法将对象(使用您自己的属性)设置到节点:
Group aGroup = new Group(); //Obviously use your correct constructor
DefaultMutableTreeNode node = new DefaultMutableTreeNode(yourObject);
请记住在Group class
中实现toString
方法
- 第二: 创建一个扩展DefaultTreeCellRenderer
并覆盖getTreeCellRendererComponent
的新类,如下所示:
public class MyRenderer extends DefaultTreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean exp, boolean leaf, int row, boolean hasFocus) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
if(node.getUserObject().getYourProperty()){
setTextNonSelectionColor(Color.BLACK);
setBackgroundSelectionColor(Color.BLUE);
setTextSelectionColor(Color.WHITE);
setBorderSelectionColor(Color.WHITE);
}
else{
setTextNonSelectionColor(Color.LIGHT_GRAY);
setBackgroundSelectionColor(Color.RED);
setTextSelectionColor(Color.WHITE);
setBorderSelectionColor(Color.WHITE);
}
super.getTreeCellRendererComponent(
tree, value, sel, exp, leaf, row, hasFocus);
return this;
}
}
-Third :将渲染器设置为树:
yourTree.setCellRenderer(new MyRenderer());