Bonjour,
J'ai un problème pour déplacer mes vertexes de mon graphe à la sourit; elles sont sont trop lentes à déplacer, comme si mon pc ramait pour pouvoir les déplacer,
D'où cela peut-il venir ?
Merci d'avance.
Bonjour,
J'ai un problème pour déplacer mes vertexes de mon graphe à la sourit; elles sont sont trop lentes à déplacer, comme si mon pc ramait pour pouvoir les déplacer,
D'où cela peut-il venir ?
Merci d'avance.
Tu utilises une API spécifique ? Du code à toi ?
Il nous faut plus d'info. Un simple "ça marche pas" ne fait jamais avancer les chose![]()
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Je vous montre mes classe :
Voilà la classe qui fait apparaitre le graphe, en fait c'est une méthode
et voilà une classe héritant de vertex view que j'ai écrite moi même
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 public void Graphique(){ int nbrind ; int colo=0; int compteur=0; Instances echant ; ArrayList facti = new ArrayList(); ArrayList facti2 = new ArrayList(); build bui = new build(); facti = bui.factichek; facti2= bui.vraiefacti; nomsommets = new String [facti.size()]; for (int u=0;u<facti.size();u++){ nomsommets[u]= (String) facti.get(u); } matriceincidence mat = new matriceincidence(); mat = bui.automatecéllulaire; nbrind = m_Instances.numInstances(); label = new JLabel[mon.numValues()]; barede = new JProgressBar [mon.numValues()]; for (int i=0;i<label.length;i++){ label[i]= new JLabel(); barede[i]= new JProgressBar(); } for (int u=0;u<label.length;u++){ label[u].setText(mon.value(u)); } int jj= 0; GraphModel model = new DefaultGraphModel(); GraphLayoutCache view = new GraphLayoutCache(model, new MyCellViewFactory()); JGraph graph = new JGraph(model, view); DefaultGraphCell[] cells = new DefaultGraphCell[facti.size()]; for (int i=0;i<facti.size();i=i+2){ cells[i]= new DefaultGraphCell(); if (i==0){ for (int ii=0;ii<label.length;ii++){ label[ii].setText(String.valueOf(splitData(m_Instances ,mon)[ii].numInstances())); } GraphConstants.setBounds(cells[i].getAttributes(), new Rectangle2D.Double(20+i*15,20+i*10,135,65)); GraphConstants.setGradientColor( cells[i].getAttributes(), Color.orange); GraphConstants.setOpaque(cells[i].getAttributes(), true); DefaultPort port0 = new DefaultPort(); cells[i].add(port0); }else{ for (int ii=0;ii<label.length;ii++){ for(int kj=0;kj<m_Instances.numInstances();kj++){ //compteur = barede[i].getValue(); } } GraphConstants.setBounds(cells[i].getAttributes(), new Rectangle2D.Double(20+i*15,20+i*10,135,65)); GraphConstants.setGradientColor( cells[i].getAttributes(), Color.orange); GraphConstants.setOpaque(cells[i].getAttributes(), true); DefaultPort port0 = new DefaultPort(); cells[i].add(port0); } } do{ for (int j=0;j<mat.donnernbrcolonnes(mat);j++){ if (mat.donnervaleurentrée(mat,jj,j)==true){ for(int k=0;k<mat.donnernbrlignes(mat);k++){ if (mat.donnervaleursortie(mat,k,j)==true){ DefaultEdge edge = new DefaultEdge(facti.get(k)); edge.setSource(cells[jj].getChildAt(0)); edge.setTarget(cells[k+1].getChildAt(0)); cells[k]= edge; int arrow = GraphConstants.ARROW_CLASSIC; GraphConstants.setLineEnd(edge.getAttributes(), arrow); GraphConstants.setEndFill(edge.getAttributes(), true); break; } } } }jj=jj+2; }while(jj<facti.size()); graph.getGraphLayoutCache().insert(cells); JFrame frame = new JFrame("L'arbre de décision"); frame.getContentPane().add(new JScrollPane(graph)); frame.pack(); frame.setVisible(true); }
Les autres classes PortView et EdgeView sont les classes par defaut de l'api.
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 import java.awt.BorderLayout; import java.awt.Component; import java.awt.GridLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import org.jgraph.JGraph; import org.jgraph.graph.VertexView; import weka.gui.explorer.ClassifierPanel; public class MyVertexView extends VertexView { ; public MyVertexView(){ super(); } public MyVertexView (Object cell){ super(cell); } public Component getRendererComponent(JGraph graph, boolean selected, boolean focus, boolean preview){ JPanel myVertexPanel = new JPanel(); JPanel jPanel1 = new JPanel(); BorderLayout borderLayout2 = new BorderLayout(); GridLayout gridLayout1 = new GridLayout(); JLabel leslabels[] ; JProgressBar barprog []; String noms[]; ClassifierPanel mongraphe = new ClassifierPanel(); leslabels = mongraphe.label; barprog = mongraphe.barede; noms= mongraphe.nomsommets; JLabel gr = new JLabel(); gr.setText(""); try { myVertexPanel.setLayout(borderLayout2); jPanel1.setLayout(gridLayout1); gridLayout1.setColumns(2); gridLayout1.setRows(0); for (int ii =0;ii<leslabels.length;ii++){ jPanel1.add(leslabels[ii]); jPanel1.add(barprog[ii]); } myVertexPanel.add(jPanel1, BorderLayout.CENTER); myVertexPanel.add(gr,BorderLayout.NORTH); } catch(Exception ex) { ex.printStackTrace(); } return myVertexPanel; } }
J'aurais une autre question : si je veux faire en sorte que les vertexes de mon graphe s'affichent d'une autre façon, je voudrais que leur disposition par défaut change, est ce que je dois voire ça du coté du GraphelayoutCache ?
Encore merci
Bon,
Pour ceux qui auraient le même problème plus tard, j'ai demandé dans le forum officiel de JGraph et on m'a dit que mon renderer devait être trop lourd donc voilà, je vais essayé de l'alléger si je n'y arrive pas ça ne sera pas trop grave.
![]()
Partager