je suis entrain de réaliser une fenêtre "JFrame" qui contient 2 boutons une qui ajoute 2 cellules et l'autre ajoute un arc dans un même graphe ajouter par la suite à la fenêtre

voila la definition du graph
code://dans le constructeur de la classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
GraphModel model = new DefaultGraphModel();
GraphLayoutCache view = new GraphLayoutCache (model,newDefaultCellViewFactory());  
 this.graph = newJGraph(model,view);
//voila le tableau des deux cells : dans la main du classe
DefaultGraphCell cells = new DefaultGraphCell [3];
 
le problem est que le 2éme bouton ne marche pas ,je ne sais pas porquoi, mais j'ai l'intention que je doit refrechir le graph pour ajouter cet arc aprés l'ajout des deux sommets avec le bouton 1 donc voici si vous voulez les actionListeners des 2 boutons
code:
//l'action des boutons
             //b1
             b1.addActionListener(new ActionListener(){
                 public void actionPerformed(ActionEvent e){
 
                     // 1er cellule
                     cells[0] = new DefaultGraphCell(new String("Hello"));
                     GraphConstants.setBounds(cells[0].getAttributes(), new Rectangle2D.Double(20,20,40,20));
                     GraphConstants.setGradientColor(cells[0].getAttributes(),Color.orange);
                     GraphConstants.setOpaque(cells[0].getAttributes(), true);
                     DefaultPort port0 = new DefaultPort();
                     cells[0].add(port0);
                     cells[1] = new DefaultGraphCell(new String("World"));
                     GraphConstants.setBounds(cells[1].getAttributes(), new Rectangle2D.Double(140,140,40,20));
                     GraphConstants.setGradientColor( cells[1].getAttributes(), Color.red);
                     GraphConstants.setOpaque(cells[1].getAttributes(), true);
                     DefaultPort port1 = new DefaultPort();
                     cells[1].add(port1);
                     graph.getGraphLayoutCache().insert(cells);
                     getContentPane().add(new JScrollPane(graph));
                     pack();
                    setVisible(true);
                 }
             });
 
                b2.addActionListener(new ActionListener(){
                 public void actionPerformed(ActionEvent e){
                     DefaultEdge edge = new DefaultEdge();
                     edge.setSource(cells[0].getChildAt(0));
                     edge.setTarget(cells[1].getChildAt(0));
                     int arrow = GraphConstants.ARROW_CLASSIC;
                     GraphConstants.setLineEnd(edge.getAttributes(), arrow);
                     GraphConstants.setEndFill(edge.getAttributes(), true);
                     graph.getGraphLayoutCache().insertEdge(cells[0],cells[1],edge);
                    getContentPane().add(new JScrollPane(graph));
                     pack();
                    setVisible(true);
                 }
             });
et je souhète de Dieux que quelqun de vous peut m'aider ,et merci d'avance.