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

📄 classbrowsertest.java~23~

📁 我喜欢java,我现在在武汉最好的软件公司开发大型ERP系统
💻 JAVA~23~
字号:
import java.awt.*;import java.awt.event.*;import java.lang.reflect.*;import java.util.*;import javax.swing.*;import javax.swing.tree.*;public class ClassBrowserTest{  public static void main(String [] args){    JFrame frame = new ClassBrowserTestFrame();    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    frame.show();  }}class ClassBrowserTestFrame extends JFrame{  public ClassBrowserTestFrame(){    setTitle("ClassBrowserTestFrame");    setSize(WIDTH,HEIGHT);    //创建根节点与树状样式    root = new DefaultMutableTreeNode(java.lang.Object.class);    model = new DefaultTreeModel(root);    tree = new JTree(model);    addClass(getClass());    tree.addTreeSelectionListener(new TreeSelectionListener(){        public void valueChanged(TreeSelectionEvent event){           TreePath path = tree.getSelectionPath();           if( path == null) return;        DefaultMutableTreeNode selectedNode            = (DefaultMutableTreeNode)path.getLastPathComponent();        Class c = (Class)selectedNode.getUserObject();        String description = getFieldDescription(c);        textArea.setText(description);        }   });    int mode = TreeSelectionModel.SINGLE_TREE_SELECTION;    tree.getSelectionModel().setSelectionMode(mode);    textArea = new JTextArea();    JPanel panel = new JPanel();    panel.setLayout(new GridLayout(1,2));    panel.add(new JScrollPane(tree));    panel.add(new JScrollPane(textArea));    getContentPane().add(panel,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;  }  public static String getFieldDescription(Class c){    StringBuffer r = new StringBuffer();    Field[] fields = c.getDeclaredFields();    for(int i = 0;i< fields.length;i++){      Field f= fields[i];      if((f.getModifiers() & Modifier.STATIC) !=0)        r.append(f.getType().getName());        r.append(" ");        r.append(f.getName());        r.append("\n");    }    return r.toString();  } private DefaultMutableTreeNode root; private DefaultTreeModel model; private JTree tree; private JTextField textField; private JTextArea textArea; private static final int WIDTH = 400; private static final int HEIGHT = 300;}

⌨️ 快捷键说明

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