你可以根据节点的类型来判断输出还是不输出呀。
下面是我写过的一个例子,你看看有没有帮助。。
class MyTreeCellRenderer extends JLabel implements TreeCellRenderer{
  public Component getTreeCellRendererComponent(JTree tree,Object value,boolean selected,boolean expanded,boolean leaf,int row,boolean hasFocus){
    Node node = (Node)value;
    switch(node.getNodeType()){
      case Node.DOCUMENT_NODE:
        this.setText(node.getNodeName());
        break;
      case Node.DOCUMENT_TYPE_NODE:
        DocumentType dt = (DocumentType)node;
        this.setText(dt.getName() + " " + "System ID: " + dt.getSystemId() + ", " + "Public ID: " + dt.getPublicId() + " ");
        break;
      case Node.PROCESSING_INSTRUCTION_NODE:
        ProcessingInstruction pi = (ProcessingInstruction)node;
        this.setText("Target=(" + pi.getTarget() + ")," + "Data=(" + pi.getData() + ")");
      case Node.CDATA_SECTION_NODE:
      case Node.COMMENT_NODE:
      case Node.TEXT_NODE:
        this.setText(node.getNodeName() + " \"" + node.getNodeValue() + "\" " );
        break;
      case Node.ENTITY_REFERENCE_NODE:
        this.setText("&" + node.getNodeName() + ";");
        break;
      case Node.ELEMENT_NODE:
        NamedNodeMap nodeMap = node.getAttributes();
        StringBuffer strElement = new StringBuffer();
        strElement.append("<" + node.getNodeName());
        for(int i=0; i<nodeMap.getLength(); i++){
          strElement.append(" " + nodeMap.item(i).getNodeName() + "=\"" + nodeMap.item(i).getNodeValue() + "\"");
        }
        this.setText(strElement.toString());
//        this.setText("<" + node.getNodeName() + ">");
        break;
      default:
        this.setText(node.getNodeType() + " <" +node.getNodeName() + "> \"" + node.getNodeValue() + "\" " );
    }
    return this;
  }
}

解决方案 »

  1.   

    你根据节点的名称判断输出不输出,意思不是一样的吗?switch语句里面判断不就可以是你节点的名称吗?
      

  2.   

    但是你只是指定了节点的显示形态,并没有让某个节点不在jtree上出现啊,即使把settext为空,那个空白还是在的啊。
      

  3.   

    自己写一个类MyTreeModel实现TreeModel接口,在里面判断要不要显示。
    TreeCellRenderer是只管显示的,是view。
    TreeModel控制内容。