import java.awt.*; import javax.swing.*; import javax.swing.table.*; import javax.swing.tree.*; import java.lang.reflect.*; private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // showInfo (jButton2); // import javax.swing.tree.*; Object obj = jButton2; // import java.awt.*; if (obj instanceof Component) { Component c = (Component) obj; while (c.getParent() != null) c = c.getParent(); DefaultMutableTreeNode root = showBranch (c); DefaultTreeModel m = new DefaultTreeModel (root); jTree1.setModel (m); } } private DefaultMutableTreeNode showBranch (Component c) { DefaultMutableTreeNode node = new DefaultMutableTreeNode (c); if (c instanceof Container) { Container d = (Container) c; Component [] items = d.getComponents(); for (Component t : items) node.add (showBranch (t)); } return node; } private void showInfo (Object obj) { // import javax.swing.table.*; DefaultTableModel m = (DefaultTableModel) jTable1.getModel (); while (m.getRowCount() > 0) m.removeRow (0); Class cls = obj.getClass(); this.setTitle(cls.getName ()); jTextField1.setText (cls.getName ()); // import java.lang.reflect.*; Method [] methods = cls.getMethods (); // for (int i = 0; i < methods.length; i++) // Method f = methods [i]; for (Method f : methods) { if (f.getParameterCount() == 0) { Class r = f.getReturnType(); if (r != void.class) { Object [] params = { }; Object v; try { v = f.invoke (obj, params); } catch (Exception ex) { v = "" + ex; } String [] s = { f.getName (), f.toString () , r.getName (), ""+v}; m.addRow (s); } } } try { Class [] args = { boolean.class }; Method f = cls.getMethod ("setVisible", args); Object [] params = { false }; f.invoke (obj, params); } catch (Exception ex) { } }