import javax.swing.* ; import java.awt.* ; import java.awt.event.* ; public class GenealogyExample extends JFrame { GenealogyTree tree ; public GenealogyExample() { super("Genealogy tree demo") ; // add window listener addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // construct the panel with the toggle buttons JRadioButton showDescendant=new JRadioButton("Show descendants", true) ; final JRadioButton showAncestor=new JRadioButton("Show ancestors") ; ButtonGroup bGroup=new ButtonGroup() ; bGroup.add(showDescendant) ; bGroup.add(showAncestor) ; ActionListener al=new ActionListener() { public void actionPerformed(ActionEvent ae) { if (ae.getSource()==showAncestor) tree.showAncestor(true) ; else tree.showAncestor(false) ; } } ; showDescendant.addActionListener(al) ; showAncestor.addActionListener(al) ; JPanel buttonPanel=new JPanel() ; buttonPanel.add(showDescendant) ; buttonPanel.add(showAncestor) ; // construct the tree tree=new GenealogyTree(getGenealogyGraph()) ; JScrollPane scrollPane = new JScrollPane(tree); scrollPane.setPreferredSize(new Dimension(200, 200)); // construct the content pane JPanel contentPane=new JPanel(new BorderLayout()) ; contentPane.add(buttonPanel, BorderLayout.NORTH) ; contentPane.add(scrollPane, BorderLayout.CENTER) ; setContentPane(contentPane) ; } /** * This method construct the genealogy graph used by the model. */ public Person getGenealogyGraph() { //the greatgrandparent generation Person a1=new Person("Jack (great-granddaddy)"); Person a2=new Person("Jean (great-granny)"); Person a3=new Person("Albert (great-granddaddy)"); Person a4=new Person("Rae (great-granny)"); Person a5=new Person("Paul (great-granddaddy)"); Person a6=new Person("Josie (great-granny)"); //the grandparent generation Person b1=new Person("Peter (grandpa)"); Person b2=new Person("Zoe (grandma)"); Person b3=new Person("Simon (grandpa)"); Person b4=new Person("James (grandpa)"); Person b5=new Person("Bertha (grandma)"); Person b6=new Person("Veronica (grandma)"); Person b7=new Person("Anne (grandma)"); Person b8=new Person("Renee (grandma)"); Person b9=new Person("Joseph (grandpa)"); //the parent generation Person c1=new Person("Isabelle (mom)"); Person c2=new Person("Frank (dad)"); Person c3=new Person("Louis (dad)"); Person c4=new Person("Laurence (dad)"); Person c5=new Person("Valerie (mom)"); Person c6=new Person("Marie (mom)"); Person c7=new Person("Helen (mom)"); Person c8=new Person("Mark (dad)"); Person c9=new Person("Oliver (dad)"); //the youngest generation Person d1=new Person("Clement (boy)"); Person d2=new Person("Colin (boy)"); Person.linkFamily(a1,a2,new Person[] {b1,b2,b3,b4}) ; Person.linkFamily(a3,a4,new Person[] {b5,b6,b7}) ; Person.linkFamily(a5,a6,new Person[] {b8,b9}) ; Person.linkFamily(b3,b6,new Person[] {c1,c2,c3}) ; Person.linkFamily(b4,b5,new Person[] {c4,c5,c6}) ; Person.linkFamily(b8,b7,new Person[] {c7,c8,c9}) ; Person.linkFamily(c4,c7,new Person[] {d1,d2}) ; return a1 ; } public static void main(String[] args) { // create a frame JFrame mainFrame=new GenealogyExample() ; mainFrame.pack() ; mainFrame.setVisible(true) ; } }