Salut,
Je veux dessiner une cercle avec Jgraph, alors j'au fait deux classes la première nomée class CircleView et son code est le suivant :
public class CircleView extends VertexView {
private static MyRenderer renderer = new MyRenderer();
public CircleView() {
try {
jbInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public CircleView(Object object) {
super(object);
}
public CellViewRenderer getRendererCompenement() {
return renderer;
}
public Point2D getPerimeterPoint(EdgeView edge, Point2D source, Point2D p) {
if (getRenderer() instanceof MyRenderer)
return ( (MyRenderer) getRenderer()).getPerimeterPoint(this, source, p);
return super.getPerimeterPoint(edge, source, p);
}
private void jbInit() throws Exception {}
public static class MyRenderer extends VertexRenderer {
public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
d.width += d.width / 5;
d.height += d.height*4;
return d;
}
public void paint(Graphics g) {
int b = borderWidth;
Dimension d = getSize();
int height = d.height - b;
boolean tmp = selected;
// create 2D by casting g to Graphics2D
Graphics2D g2 = (Graphics2D) g;
if (super.isOpaque()) {
g.setColor(super.getBackground());
if (gradientColor != null && !preview) {
setOpaque(false);
g2.setPaint(new GradientPaint(0, 0, getBackground(), getWidth(), getHeight(), gradientColor, true));
}
g2.fillOval(b, b, height, height);
}
try {
setBorder(null);
setOpaque(false);
selected = false;
super.paint(g);
}
finally {
selected = tmp;
}
if (selected) {
g2.setStroke(GraphConstants.SELECTION_STROKE);
g2.setColor(highlightColor.gray);
g2.drawOval(b, b, height, height);
}
}
}
*******************
La deuxième classe est une classe de test de la première classe son code est le suivant:
public class Test{
public static void main(String[] args) {
GraphModel model = new DefaultGraphModel();
JGraph graph = new JGraph(model);
//graph.getGraphLayoutCache().insert(cells);
graph.getGraphLayoutCache().setFactory(new DefaultCellViewFactory() {
// CellViews for each type of cell
protected VertexView createVertexView(Object cell) {
return new CircleView(cell);
}
});
JFrame frame = new JFrame();
frame.getContentPane().add(new JScrollPane(graph));
frame.pack();
frame.setVisible(true);
}
}
*********************
mais lorsque je fais l'éxécution une frame vide est affiché , le cercle n'est pas affiché.
Svp , est ce que quelque'un peux m'aider et m'expliquer c'est quoi le problème et comment le résoudre.
Merci