你可以根据节点的类型来判断输出还是不输出呀。
下面是我写过的一个例子,你看看有没有帮助。。
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;
}
}
解决方案 »
- JavaMail实现的邮件收取不给力,求解决方案
- 眼尖的大侠们过来帮找个错,关于java接口
- oscache乱码问题,很急,谢谢各位
- 使用Spring+Hibernate同时连接两个数据库时出错,如何解决?
- 结果集的问题!!
- 数据源问题:如何指定特定的数据库到数据源
- 求??????
- 用JDBC驱动连接数据库com.microsoft.jdbc.sqlserver.SQLServerDriver这个包应放在什么地方(java)????
- tomcat5 + eclipse2.1.3 如何配置来写servlet?谢谢。
- jsp页面使用传参的java方法 页面报500错
- 100分请教现在java怎么做项目的?用那种模式?先谢后送分
- J2EE基础问题两三问,追加200分。
TreeCellRenderer是只管显示的,是view。
TreeModel控制内容。