你可以根据节点的类型来判断输出还是不输出呀。
下面是我写过的一个例子,你看看有没有帮助。。
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;
}
}
下面是我写过的一个例子,你看看有没有帮助。。
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;
}
}
TreeCellRenderer是只管显示的,是view。
TreeModel控制内容。