⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classtree.java~15~

📁 我喜欢java,我现在在武汉最好的软件公司开发大型ERP系统
💻 JAVA~15~
字号:
/** * * <p>Title: Class Tree </p> * * <p>Description: 通过类的层次结构图来表示节点 </p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company : Spring </p> * * @author : Spring * @version 1.0 */import java.awt.*;import java.awt.event.*;import java.lang.reflect.*;import java.util.*;import javax.swing.*;import javax.swing.tree.*;public class ClassTree{  public static void main(String[] args){    JFrame frame = new ClassTreeFrame();    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    frame.show();  }}class ClassTreeFrame extends JFrame{  public ClassTreeFrame(){    setTitle("ClassTree");    setSize(WIDTH,HEIGHT);    //创建根节点    root = new DefaultMutableTreeNode(java.lang.Object.class);    //设置默认树型方式    model = new DefaultTreeModel(root);    tree = new JTree(model);    addClass(getClass());    ClassNameTreeCellRenderer renderer        = new ClassNameTreeCellRenderer();    //设置图标    renderer.setClosedIcon(new ImageIcon("red-ball.gif"));    renderer.setOpenIcon(new ImageIcon("yellow-ball.gif"));    renderer.setLeafIcon(new ImageIcon("blue-ball.gif"));    tree.setCellRenderer(renderer);    //添加滚动面板    getContentPane().add(new JScrollPane(tree),        BorderLayout.CENTER);    //添加文本框    addTextField();  }  public void addTextField(){    JPanel panel = new JPanel();    ActionListener addListener = new ActionListener(){       public void actionPerformed(ActionEvent event){         try{           String text = textField.getText();           addClass(Class.forName(text));           textField.setText("");         }     catch(ClassNotFoundException e){       JOptionPane.showMessageDialog(null,           "Class not found");     }       }    };    textField = new JTextField(20);    textField.addActionListener(addListener);    panel.add(textField);    JButton addButton = new JButton("Add");    addButton.addActionListener(addListener);    panel.add(addButton);    getContentPane().add(panel,BorderLayout.SOUTH);  }  public DefaultMutableTreeNode findUserObject(Object obj){    Enumeration e = root.breadthFirstEnumeration();    while(e.hasMoreElements()){       DefaultMutableTreeNode node           =(DefaultMutableTreeNode)e.nextElement();       if(node.getUserObject().equals(obj))         return node;    }    return null;  }  public DefaultMutableTreeNode addClass(Class c){    if(c.isInterface() ||c.isPrimitive())      return null;    DefaultMutableTreeNode node = findUserObject(c);     if(node !=null)       return node;   Class s = c.getSuperclass();   DefaultMutableTreeNode  parent;   if(s == null)     parent = root;   else     parent = addClass(s);   DefaultMutableTreeNode newNode       = new DefaultMutableTreeNode(c);   model.insertNodeInto(newNode,parent,parent.getChildCount());   TreePath path = new TreePath(model.getPathToRoot(newNode));   tree.makeVisible(path);   return newNode;  }  private DefaultMutableTreeNode root;  private DefaultTreeModel model;  private JTree tree;  private JTextField textField;  private static final int  WIDTH = 400;  private static final int  HEIGHT = 300;}class ClassNameTreeCellRenderer extends DefaultTreeCellRenderer{    public Component getTreeCellRendererComponent(JTree tree,        Object value,boolean selected,boolean expanded,      boolean leaf,int row,boolean hasFocus){          super.getTreeCellRendererComponent(tree,value,              selected,expanded,leaf,row,hasFocus);  DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;  Class c = (Class)node.getUserObject();  if(plainFont == null){     plainFont = getFont();     if(plainFont !=null)       italicFont = plainFont.deriveFont(Font.ITALIC);    }    if((c.getModifiers() & Modifier.ABSTRACT) == 0)      setFont(plainFont);   else     setFont(italicFont);   return this;} private Font plainFont = null; private Font italicFont = null;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -