2017-02-19 1 views
1

J'utilise JGraphX ​​pour dessiner un graphique, en utilisant mxCircleLayout comme représentation de base, mais je veux changer certains comportements. Par exemple, je veux que le EDGESTYLE_TOPTOBOTTOM, donc avant de construire mxGraphComponent je définir un nouveau style de bord:Styles Jgraphx appliqués à circleLayout

' JGraphXAdapter graphAdapter = new JGraphXAdapter (this.stradario.getStradario());

graphAdapter.getModel().beginUpdate(); 
try { 
    Map<String, Object> edgeStyle = new HashMap<String, Object>(); 
    edgeStyle = graphAdapter.getStylesheet().getDefaultEdgeStyle(); 
    edgeStyle.put(mxConstants.STYLE_EDGE, mxConstants.EDGESTYLE_TOPTOBOTTOM); 
    mxStylesheet stylesheet = new mxStylesheet(); 
    stylesheet.setDefaultEdgeStyle(edgeStyle); 
    graphAdapter.setStylesheet(stylesheet); 

} finally { 
    graphAdapter.getModel().endUpdate(); 
} 

mxCircleLayout layout = new mxCircleLayout(graphAdapter); 

layout.execute(graphAdapter.getDefaultParent()); 

mxGraphComponent graphComponent = new mxGraphComponent(graphAdapter); 
graphComponent.getViewport().setBackground(Color.white); 

' Le graphique a été dessiné comme une mise en page de cercle, mais les bords ne sont pas dans le style TOPTOBOTTOM. First draw Ensuite, si je dessine une nouvelle arête ou si j'en modifie une existante, le bord est dessiné avec le style TOPTOBOTTON.

Modified edge take the TOPTOBOTTOMSTYLE

Je ne comprends pas pourquoi la première est tirée sans style TOPTOBOTTOM et le bord modifié a été fait avec le nouveau style.

Répondre

0

La mise en page désactive les styles de bord par défaut. Définissez le membre disableEdgeStyle sur false.

mxCircleLayout layout = new mxCircleLayout(graphAdapter); 
layout.setDisableEdgeStyle(false); 
layout.execute(graphAdapter.getDefaultParent());