tree节点图片

来源:互联网 发布:mac菜单栏设置 编辑:程序博客网 时间:2024/05/16 03:56
/* (swing1.1) *///package jp.gr.java_conf.tame.swing.examples;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.tree.*;import javax.swing.event.*;import javax.swing.plaf.metal.*;import jp.gr.java_conf.tame.swing.tree.*;import jp.gr.java_conf.tame.swing.icon.*;/** * @version 1.0 01/12/99 */public class IconNodeTreeExample extends JFrame {  public IconNodeTreeExample() {    super("IconNode TreeExample");        String[] strs = {"swing home",  // 0     "platf",       // 1     "basic.txt",   // 2     "metal.c",     // 3     "metal.java",  // 4     "metal.html",  // 5     "Computer",    // 6     "A:",          // 7     "C:",          // 8     "D:"};         // 9                                                 IconNode[] nodes = new IconNode[strs.length];    for (int i=0;i<strs.length;i++)      nodes[i] = new IconNode(strs[i]);     nodes[0].add(nodes[1]);    for (int i=2;i<=5;i++) nodes[1].add(nodes[i]);    nodes[0].add(nodes[6]);    for (int i=7;i<=9;i++) nodes[6].add(nodes[i]);        //    // set Icon directly    //    nodes[0].setIcon(MetalIconFactory.getFileChooserHomeFolderIcon());         //    // use JTree default Icon    //    // nodes[1]    // nodes[2]       //    // set Icon by user Object    //    // nodes[3]    // nodes[4]    // nodes[5]        //    // set Icon by name    //    nodes[6].setIconName("computer");    nodes[7].setIconName("floppyDrive");    nodes[8].setIconName("hardDrive");    nodes[9].setIconName("hardDrive");        JTree tree = new JTree( nodes[0] );    tree.putClientProperty("JTree.icons", makeIcons());    tree.setCellRenderer(new IconNodeRenderer());    JScrollPane sp = new JScrollPane(tree);    getContentPane().add(sp, BorderLayout.CENTER);  }    private Hashtable makeIcons() {    Hashtable icons = new Hashtable();    icons.put("floppyDrive",MetalIconFactory.getTreeFloppyDriveIcon());    icons.put("hardDrive"  ,MetalIconFactory.getTreeHardDriveIcon());    icons.put("computer"   ,MetalIconFactory.getTreeComputerIcon());     icons.put("c"    ,TextIcons.getIcon("c"));    icons.put("java" ,TextIcons.getIcon("java"));    icons.put("html" ,TextIcons.getIcon("html"));        return icons;  }  public static void main(String args[]) {    IconNodeTreeExample frame = new IconNodeTreeExample();    frame.addWindowListener(new WindowAdapter() {      public void windowClosing(WindowEvent e) {System.exit(0);}    });    frame.setSize(300, 150);    frame.setVisible(true);  }}===============================================
/* (swing1.1) */ package jp.gr.java_conf.tame.swing.tree;import java.util.*;import java.awt.*;import javax.swing.*;import javax.swing.tree.*;/** * @version 1.0 01/12/99 */public class IconNodeRenderer extends DefaultTreeCellRenderer {  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);           Icon icon = ((IconNode)value).getIcon();        if (icon == null) {      Hashtable icons = (Hashtable)tree.getClientProperty("JTree.icons");      String name = ((IconNode)value).getIconName();      if ((icons != null) && (name != null)) {        icon = (Icon)icons.get(name);        if (icon != null) {          setIcon(icon);        }      }    } else {      setIcon(icon);    }        return this;  }}================================================
/*  (swing1.1.1beta2) */ package jp.gr.java_conf.tame.swing.tree;import java.util.*;import javax.swing.*;import javax.swing.tree.*;/** * @version 1.1 06/19/99 */public class IconNode extends DefaultMutableTreeNode  {  protected Icon   icon;  protected String iconName;  public IconNode() {    this(null);  }  public IconNode(Object userObject) {    this(userObject, true, null);  }  public IconNode(Object userObject, boolean allowsChildren       , Icon icon) {    super(userObject, allowsChildren);    this.icon = icon;  }  public void setIcon(Icon icon) {    this.icon = icon;  }    public Icon getIcon() {    return icon;  }    public String getIconName() {    if (iconName != null) {      return iconName;    } else {      String str = userObject.toString();      int index = str.lastIndexOf(".");      if (index != -1) {        return str.substring(++index);      } else {        return null;      }      }  }    public void setIconName(String name) {    iconName = name;  }}================================
/* (swing1.1) */ package jp.gr.java_conf.tame.swing.icon;import java.util.*;import java.awt.*;import javax.swing.*;import javax.swing.plaf.metal.*;/** * @version 1.0 01/12/99 */public class TextIcons extends MetalIconFactory.TreeLeafIcon {  protected String label;  private static Hashtable labels;    protected TextIcons() {  }  public void paintIcon(Component c, Graphics g, int x, int y) {    super.paintIcon( c, g, x, y );    if (label != null) {      FontMetrics fm = g.getFontMetrics();                int offsetX = (getIconWidth()  - fm.stringWidth(label)) /2;      int offsetY = (getIconHeight() - fm.getHeight()) /2 - 2;            g.drawString(label, x + offsetX ,                          y + offsetY + fm.getHeight());    }  }    public static Icon getIcon(String str) {    if (labels == null) {      labels = new Hashtable();      setDefaultSet();    }    TextIcons icon = new TextIcons();    icon.label = (String)labels.get(str);    return icon;  }    public static void setLabelSet(String ext, String label) {    if (labels == null) {      labels = new Hashtable();      setDefaultSet();    }    labels.put(ext, label);     }    private static void setDefaultSet() {    labels.put("c"     ,"C");       labels.put("java"  ,"J");       labels.put("html"  ,"H");       labels.put("htm"   ,"H");           // and so on    /*    labels.put("txt"   ,"TXT");       labels.put("TXT"   ,"TXT");       labels.put("cc"    ,"C++");       labels.put("C"     ,"C++");       labels.put("cpp"   ,"C++");       labels.put("exe"   ,"BIN");       labels.put("class" ,"BIN");       labels.put("gif"   ,"GIF");       labels.put("GIF"   ,"GIF");          labels.put("", "");       */  }}
原创粉丝点击