import javax.swing.*; import javax.swing.tree.*; import javax.swing.table.*; import java.awt.*; import java.lang.reflect.*; DefaultTreeModel model; private void showBranch (DefaultMutableTreeNode branch, Container source) { int n = source.getComponentCount(); for (int i = 0; i < n; i++) { Component c = source.getComponent (i); DefaultMutableTreeNode node = new DefaultMutableTreeNode (c); branch.add (node); if (c instanceof Container) showBranch(node, (Container) c); } } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { DefaultMutableTreeNode root = new DefaultMutableTreeNode (this); showBranch (root, this); model = new DefaultTreeModel (root); jTree1.setModel (model); } private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) { Object t = evt.getPath().getLastPathComponent(); if (t instanceof DefaultMutableTreeNode) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) t; Object obj = node.getUserObject(); setTitle (""+obj); showObject (obj); } } private void showObject (Object obj) { Class cls = obj.getClass(); setTitle (cls.getName()); Method [] m = cls.getDeclaredMethods(); String [] columns = {"name", "decl" }; String [] [] data = { { "a", "b"}, { "c", "d" }}; DefaultTableModel t = new DefaultTableModel (data, columns); jTable1.setModel (t); }