do tridy MyScene public void run() { Window w = new Window (); w.setVisible (true); w.info (this); } public class MyNode { public String name; public Object obj; public java.lang.reflect.Method met; public String toString () { return name; } } // NO import edu.cmu.cs.dennisc.scenegraph.*; import javax.swing.tree.*; import org.alice.apis.moveandturn.*; import java.lang.reflect.*; public class Window extends javax.swing.JFrame { public Window() { initComponents(); } DefaultTreeModel model; DefaultMutableTreeNode act; public void open (Object s) { DefaultMutableTreeNode node = new DefaultMutableTreeNode (s); if (model == null) { model = new DefaultTreeModel (node); jTree1.setModel (model); } else { int inx = act.getChildCount(); model.insertNodeInto (node, act, inx); } act = node; } public void put (Object s) { DefaultMutableTreeNode node = new DefaultMutableTreeNode (s); int inx = act.getChildCount(); model.insertNodeInto (node, act, inx); } public void close () { act = (DefaultMutableTreeNode) act.getParent(); } public void detail (Composite c) { // import org.alice.apis.moveandturn.*; open (c.getName()); Class cls = c.getClass(); open ("methods of " + cls.getName()); // import java.lang.reflect.*; Method [] list = cls.getMethods(); for (Method m : list) { open (m.getName ()); Parameter [] params = m.getParameters(); for (Parameter p : params) put ("param " + p.getType().getSimpleName()); put ("result " + m.getReturnType().getSimpleName()); if (m.getParameterCount() == 0 && m.getName().startsWith("get")) { try { Object value = m.invoke (c); put ("value " + value); } catch (Exception ex) { } } close (); } close (); Transformable [] a = c.getComponents(); for (Transformable t : a) { if (t instanceof Composite) detail ( (Composite) t ); else put ("" + a); } close (); } public void info (Composite c) { /* open ("Abc"); put ("item 1"); put ("item 2"); open ("Klm"); put ("item 3"); close (); put ("item 4"); close (); */ // import org.alice.apis.moveandturn.*; detail (c); } private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) { TreePath p = evt.getPath(); Object t = p.getLastPathComponent(); if (t instanceof DefaultMutableTreeNode) { DefaultMutableTreeNode n = (DefaultMutableTreeNode) t; if (n.getUserObject() instanceof MyNode) { MyNode u = (MyNode) n.getUserObject(); jButton1.setText (u.name); } } }