Bonjour
J’ai un pb, je suis un débutant ds le JGraph ,donc j’ai fait des recherche et j’ai trouvé un pdf ()qui contient des lignes des codes,ces codes sont formé de petite application , je les est utilisé , mais mon pb est : comment afficher une cellule contenant une image et une autre cellule(comme ds le pdf )
Svp aidez moi, c’est une partie de mon PFE
merci d'avance
Voici mon code
classe main

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
// package exp6;
public class Main {
 
    public static void main(String[] args) {
 
        new DynamicGraph();
    }
}
classe DynamicGraph :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package exp6;
import org.jgraph.JGraph;
import java.awt.geom.Rectangle2D;
import org.jgraph.graph.BasicMarqueeHandler;
import java.awt.geom.Point2D;
import java.awt.BorderLayout;
import org.jgraph.graph.PortView;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.CellView;
import org.jgraph.graph.DefaultGraphModel;
import org.jgraph.graph.DefaultPort;
import org.jgraph.graph.GraphConstants;
import org.jgraph.graph.AttributeMap;
import java.util.Hashtable;
import java.util.Map;
import org.jgraph.graph.GraphModel;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import exp6.MyVertexView;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.JToggleButton;
import java.awt.Color;
import java.awt.*;
import javax.swing.JScrollPane;
import org.jgraph.graph.DefaultEdge;
 
public class DynamicGraph extends JFrame {
 
    private int stateAppl = 0;
    JGraph myGraph = new JGraph(new DefaultGraphModel());
    JToggleButton noCell;
 
    //constructeur
public DynamicGraph() {
super("SimpleGraph");
myGraph.setMarqueeHandler(new MyMarqueeHandler());
JScrollPane myScrollPane = new JScrollPane(myGraph);
getContentPane().add(myScrollPane);
JPanel myPanel = new JPanel();//panel qui contient les boutons:annuler,ajouter,supprimer
////*********Listner pour bouton annuler******************************
//noCell = new JToggleButton("Annuler");
//noCell.addActionListener(new ActionListener() {//Listner du bouton annuler
//public void actionPerformed(ActionEvent e) {
//stateAppl = 0;
//}
//});//pour la méthode ActionListner, ce bouton  n'est pas encore fonctinnel
//******Listner bouton ajouter*********************
JToggleButton addCell = new JToggleButton("Ajouter");
addCell.addActionListener(new ActionListener() {//Listner du bouton ajouter
public void actionPerformed(ActionEvent e) {
    stateAppl=1;
}
});//fin de l'action Ajouter;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//***Listner bouton supprimer***100%*************************
JToggleButton removeCell = new JToggleButton("Supprimer");
removeCell.addActionListener(new ActionListener() {//Listner du bouton supprimer
public void actionPerformed(ActionEvent e) {
Object[] t = myGraph.getSelectionCells();
                t = myGraph.getDescendants(t);
                myGraph.getGraphLayoutCache().remove(t);
}
});//fin de action Supprimer;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//le code associé à l'interface UI
myPanel.add(noCell);//ajouter le bouton annuler au Panel
myPanel.add(addCell);//ajouter le bouton ajouter au Panel
myPanel.add(removeCell);//ajouter le bouton annuler au Panel
getContentPane().add(myPanel,BorderLayout.SOUTH);//mettre le panel ds le graph
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 300);//mettre la bonne size
 setVisible(true);
}//fin du constructeur
 
class MyMarqueeHandler extends BasicMarqueeHandler {
protected Point2D start, current;
protected PortView port, firstPort;
//ajouter dynamiquement une cellule%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    public void mousePressed(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
if (stateAppl == 1) {
DefaultGraphCell myFirst = new DefaultGraphCell("cellule");//creation d'une cellule
DefaultPort myPort1 = new DefaultPort();//creation du port
myFirst.add(myPort1);//ajouter le port au cellue
Map myHashTable = new Hashtable();
GraphConstants.setBounds(myHashTable, new
Rectangle2D.Double(e.getX(),e.getY(),40,100));//mettre le triangle à la position de la souris
myFirst.setAttributes(new AttributeMap(myHashTable));//associe le rectangle à la cellule
myGraph.getGraphLayoutCache().insert(myFirst);
noCell.setSelected(true);
stateAppl = 0;
}//fin if
}
}//fin de methode mousePressed 
}
}
classe MyCellViewFactory :
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
package exp6;
 
import org.jgraph.graph.*;
//La gestion de l’ensemble des vues d’un composant JGraph se fait
//dans un objet de type CellViewFactory
 
public class MyCellViewFactory extends DefaultCellViewFactory{
 
 
    public CellView createView(GraphModel model, Object cell) {
        if (model.isPort(cell)) {
            return new MyPortView(cell);}
        else if (model.isEdge(cell)) {
            return new MyEdgeView(cell);}
        else
            return new MyVertexView(cell); /*Ne pas oublier de transmettre
l’objet modèle à la vue*/
    }
}
classe MyVertexView
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
package exp6;
 
import java.awt.geom.Rectangle2D;
import java.awt.*;
import javax.swing.*;
import org.jgraph.JGraph;
import org.jgraph.graph.*;
 
public class MyVertexView extends VertexView {
    public MyVertexView(Object cell){
            super(cell);
    }
    //changer la taille d’une cellule
    public Rectangle2D getBounds() {
Rectangle2D temp = super.getBounds();
return new Rectangle2D.Double(temp.getX(), temp.getY(), 100, 100);/*La méthode qui permet de déterminer la
position et la taille à tout instant*/
}
    //modifier le renderer d’une cellule
    public Component getRendererComponent(JGraph graph, boolean selected, boolean focus, boolean preview) {
        JPanel myVertexPanel = new JPanel();
        myVertexPanel.setLayout(new BoxLayout(myVertexPanel, BoxLayout.Y_AXIS));
        JLabel myLabelImage = new JLabel(new ImageIcon("image.gif"));//label image
        //myLabelImage.setBorder(defaultBorder);
        JLabel myLabelName = new JLabel(cell.toString());//label cell
        JLabel myLabelOrd = new JLabel(" HELLO ");//label hello
        myLabelOrd.setAlignmentX(Component.CENTER_ALIGNMENT);//pour centrer le texte
        myLabelOrd.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));//pour la bordure
 
        //ajouter tous les labels ds le panel
        myVertexPanel.add(myLabelImage);
        myVertexPanel.add(Box.createRigidArea(new Dimension(0, 15)));
        myVertexPanel.add(myLabelName);
        myVertexPanel.add(Box.createRigidArea(new Dimension(0, 15)));
        myVertexPanel.add(myLabelOrd);
        return myVertexPanel;
    }
}