那如果点击help文档左边树的每个节点,在右边的textpane里显示其说明,哪这些说明是不是该预先写在一个文件里,那显示的时候字体大小怎么控制,另外如果有图的话怎么调?

解决方案 »

  1.   

    package common.tree;import java.awt.Component;
    import javax.swing.Icon;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultTreeCellRenderer;
    import javax.swing.plaf.metal.MetalIconFactory;/**
     * 树图标
     */
    public class IconNodeRenderer extends DefaultTreeCellRenderer {  /** 有叶子节点的图标   */
      public static final Icon FOLDER_ICON=common.Transfer.getAppIcon("resource/folder.gif");  /** 叶子节点的图标*/
      public static final Icon LEAF_ICON=common.Transfer.getAppIcon("resource/leaf.gif");  /** 节点打开时的图标*/
      public static final Icon EXPANDED_ICON=common.Transfer.getAppIcon("resource/expanded.gif");  public Component getTreeCellRendererComponent(JTree tree, Object value,
          boolean sel, boolean expanded, boolean leaf,
          int row, boolean hasFocus) {    super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);    TreeNode node=(TreeNode)value;    //判断节点是否已设置图标
        Icon icon = node.getIcon();    if (icon == null) {
          if(expanded)
            setIcon(EXPANDED_ICON);
          else if(!leaf)
            setIcon(FOLDER_ICON);
          else
            setIcon(LEAF_ICON);
        } else {
          setIcon(icon);
        }    return this;
      }}可根据需要设置自己的图标,比如当前选中状态等
      

  2.   

    JTree自动响应鼠标双击事件。
    可以自己定义一个类,存储相应的信息。
    如:
    public class NodeOfNameID {
      private String name;
      private String id;
      public NodeOfNameID(String name, String id) {
        this.name = name;
        this.id = id;
      }
      //toString方法一定要覆盖
      public String toString() {
        return name;
      }
    }
    通过
    DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode(new NodeOfNameID("test" ,"T001"));
    把节点加入树中。
    处理树的选择事件得到选中节点信息就可以进行相应的操作。