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

📄 objectinspectortest.java~40~

📁 我喜欢java,我现在在武汉最好的软件公司开发大型ERP系统
💻 JAVA~40~
字号:
/** * <p>Title: ObjectInspectorTest </p> * 定制树模型 * <p>Description: </p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company: Spring </p> * * @author : Spring * @version 1.0 *///importsimport java.awt.*;import java.awt.event.*;import java.lang.reflect.*;import java.util.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.tree.*;public class ObjectInspectorTest{  public static void main(String[] args){    JFrame frame = new ObjectInspectorFrame();    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    frame.show();  }}class ObjectInspectorFrame extends JFrame{    public ObjectInspectorFrame(){      setTitle("ObjectInspectorTest");      setSize(WIDTH, HEIGHT);      Variable v = new Variable(getClass(), "this", this);      ObjectTreeModel model = new ObjectTreeModel();      model.setRoot(v);      //创建树型结构      tree = new JTree(model);      getContentPane().add(new JScrollPane(tree),          BorderLayout.CENTER); }   private JTree tree;   private static final int WIDTH = 400;   private static final int HEIGHT = 300;  }class ObjectTreeModel implements TreeModel{   public ObjectTreeModel(){     root = null;   }   public void setRoot(Variable v){     Variable oldRoot = v;     root = v;     fireTreeStructureChanged(oldRoot);   }   /**    * Description : 以下三个方法显示了对象树到JTree组件之间的结构    * @return Object    */   //得到根节点   public Object getRoot(){     return root;   }   //得到当前节点的子节点个数   public int getChildCount(Object parent){     return ((Variable)parent).getFields().size();   }   /**    *    * @param parent Object    * @param index int    * @返回一个新的Variable对象,用于描述一个特定的字段    */   public Object getChild(Object parent,int index){     ArrayList fields = ((Variable)parent).getFields();     Field f =(Field)fields.get(index);     Object parentValue = ((Variable)parent).getValue();     try{       //产生字段的类型和名字       return new Variable(f.getType(),f.getName(),f.get(parentValue));     }     catch(IllegalAccessException e){       return null;     }   }   public int getIndexOfChild(Object parent,Object child){     int n = getChildCount(parent);     for(int i=0;i<n;i++)       if(getChild(parent,i).equals(child))         return i;     return -1;   }   public boolean isLeaf(Object node){     return getChildCount(node) == 0;   }   public void valueForPathChanged(TreePath path,       Object newValue){   }   public void addTreeModelListener(TreeModelListener I){       listenerList.add(TreeModelListener.class,I);   }   public void removeTreeModelListener(TreeModelListener I){       listenerList.remove(TreeModelListener.class,I);   }   protected void fireTreeStructureChanged(Object oldRoot){     TreeModelEvent event         = new TreeModelEvent(this,new Object[]{oldRoot});     EventListener[] listeners = listenerList.getListeners(      TreeModelListener.class);    for(int i = 0;i<listeners.length;i++)      ((TreeModelListener)listeners[i]).treeStructureChanged(event);   }   private Variable root;   private EventListenerList listenerList       = new EventListenerList();} class Variable{   public Variable(Class aType,String aName,Object aValue){     type = aType;     name = aName;     value = aValue;     fields = new ArrayList();     if(!type.isPrimitive() && !type.isArray() && !type.equals(String.class) &&          value != null){        for(Class c = value.getClass();c != null;c = c.getSuperclass()){          Field[] f = c.getDeclaredFields();          AccessibleObject.setAccessible(f,true);          for(int i=0;i<f.length;i++)            if((f[i].getModifiers() & Modifier.STATIC)==0)              fields.add(f[i]);        }      }   }   public Object getValue(){     return value;   }   public ArrayList getFields(){     return fields;   }   public String toString(){     String r = type + " " + name;     if(type.isPrimitive())       r += "=" + value;     else if(type.equals(String.class))       r += "=" + value;     else if (value == null)       r += "=null";     return r;   }   private Class type;   private String name;   private Object value;   private ArrayList fields; }

⌨️ 快捷键说明

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