package browse; import java.awt.Component; import java.awt.Container; import javax.swing.*; import javax.swing.tree.*; import java.lang.reflect.*; public class BrowseWindow extends javax.swing.JFrame { DefaultMutableTreeNode root; DefaultTreeModel model; public BrowseWindow() { initComponents(); root = new DefaultMutableTreeNode ("root"); scan (root, this); model = new DefaultTreeModel (root); jTree1.setModel (model); } public void scan (DefaultMutableTreeNode branch, java.awt.Component c) { Class cls = c.getClass(); String s = cls.getName(); DefaultMutableTreeNode node = new DefaultMutableTreeNode (s); branch.add (node); methods (node, c); if (c instanceof Container) { Container d = (Container) c; int n = d.getComponentCount(); for (int i = 0; i < n; i++) scan (node, d.getComponent(i)); } } public void methods (DefaultMutableTreeNode branch, Object obj) { DefaultMutableTreeNode temp = new DefaultMutableTreeNode ("methods"); branch.add (temp); branch = temp; Class cls = obj.getClass(); Method [] list = cls.getMethods(); for (Method m : list) { String s = m.getName(); // + " : " + m.toString(); if (m.getParameterCount() == 0 && m.getName().startsWith("get")) try { Object answer = m.invoke (obj); s = s + " : " + answer; } catch (Exception e) { } if (cls.getName().equals ("javax.swing.JButton") && m.getName().equals ("setText") && m.getParameterCount() == 1) { s = " * " + s; try { Object [] params = new Object [] { "Ahoj" }; Object answer = m.invoke (obj, params); s = s + " : " + answer; } catch (Exception e) { } } DefaultMutableTreeNode node = new DefaultMutableTreeNode (s); branch.add (node); } } }