2016-08-11 13 views
1

DefaultEdgeStyleを変更して、異なるタイプのエッジを作成しています。各スタイルは、UIでクリックされたボタンに依存し、挿入エッジメソッドではなく、ある頂点から別の頂点にドラッグすることによってエッジが追加されます。GetEdgeStyle return null JGraphX

私の問題は、エッジスタイルを取得するときにnullが返されることです。

どうしてですか?私は、各エッジがmxStylesheetで定義され、defaultEdgeStyleを使用しているため(V6)

private void applyEdgeNew2(mxStylesheet stylesheet) { 
    // Settings for edges 
    Map<String, Object> edge = new HashMap<String, Object>(); 
    edge.put(mxConstants.STYLE_ROUNDED, true); 
    edge.put(mxConstants.STYLE_ORTHOGONAL, false); 
    edge.put(mxConstants.STYLE_EDGE, "elbowEdgeStyle"); 
    edge.put(mxConstants.STYLE_SHAPE, mxConstants.SHAPE_CONNECTOR); 
    edge.put(mxConstants.STYLE_ENDARROW, mxConstants.ARROW_CLASSIC); 
    edge.put(mxConstants.STYLE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE); 
    edge.put(mxConstants.STYLE_ALIGN, mxConstants.ALIGN_CENTER); 
    edge.put(mxConstants.STYLE_STROKECOLOR, "#FF0000"); // default is #6482B9 
    edge.put(mxConstants.STYLE_FONTCOLOR, "#446299"); 
    stylesheet.putCellStyle("edge2", edge); 
    stylesheet.setDefaultEdgeStyle(edge); 
} 

private void applyEdgeNew3(mxStylesheet stylesheet) { 
    // Settings for edges 
    Map<String, Object> edge = new HashMap<String, Object>(); 
    edge.put(mxConstants.STYLE_EDGE, mxConstants.EDGESTYLE_SEGMENT); 
    edge.put(mxConstants.STYLE_SHAPE, mxConstants.SHAPE_CONNECTOR); 
    edge.put(mxConstants.STYLE_ENDARROW, mxConstants.ARROW_CLASSIC); 
    edge.put(mxConstants.STYLE_STROKECOLOR, "#6482B9"); // default is #6482B9 
    stylesheet.putCellStyle("edge3", edge); 
    stylesheet.setDefaultEdgeStyle(edge); 

} 


graphComponent.getGraphControl().addMouseListener(new MouseListener() { 

    @Override 
    public void mouseReleased(MouseEvent arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mousePressed(MouseEvent arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseExited(MouseEvent arg0) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void mouseClicked(MouseEvent e) { 
     mxCell cell =(mxCell) graphComponent.getCellAt(e.getX(), e.getY()); 
     if(cell != null) 
     { 
     System.out.println("Edge:"+cell.isEdge()); 
     System.out.println("Vertex:"+cell.isVertex()); 
     if (cell.isEdge()){ 

     System.out.println(cell.getStyle()); //Here is the problem(It return null value) 
     System.out.println(cell.getId()); 
     System.out.println(cell.getSource()); 
     System.out.println(cell.getTarget()); 
    } 
    if (cell.isVertex()){ 
     System.out.println(cell.getStyle()); 
     System.out.println(cell.getId()); 
    } 
} 

}

答えて

1

nullが、返されるJgraphXを使用しています。

以前に作成されたエッジは、ビューでは単に更新されませんでした。それらを少しばかり混乱させると、彼らは新しい定義されたdefaultEdgeStyleにスタイルを変更することを認識します。

異なるスタイルが必要な場合は、エッジを作成して、styleパラメータを指定する必要があります。これは、グラフのmxStylesheetオブジェクトに追加したエントリのキーか、まったく新しいスタイル(例: strokeColor=#0ff00f