2017-01-14 4 views
0

Я рисую простой график (используя интерфейс Java swing).jgraphx change vertex size

Граф в порядке, но размер по умолчанию/автоматические вершины мал для моей цели. Как установить размер вершины (прямоугольник или эллипс)?

я могу изменить некоторое поведение графа с помощью пут() (как put(mxConstants.STYLE_SHAPE, mxConstants.SHAPE_ELLIPSE)), но не размер вершин.

Графа в порядке, но/размер автоматических вершин по умолчанию мало для моей цели. Как установить вершина размер (прямоугольник или эллипс)?

могу ли я неправильно понял много о jgraphx?

документация очень трудно понять, очень загадочное (по крайней мере для меня), я могу есть предложения для книг или ссылки на лучше понять jgraphx для Java.

более

Одна деталь: граф строится не поэлементно, но он пришел из графика, построенного с использованием jgraphT jGraphXAdapter

JGraphXAdapter<Incrocio, Strada> graphAdapter = new JGraphXAdapter<Incrocio, Strada>(listenableGraph);

+1

* «Документация очень трудно понять» * Ссылка на документы для данного класса используется. –

+0

Я сделал шаг вперед. Я могу изменить размер вершины, изменяя геометрию ячеек: \t Мне нужно перебирать каждую ячейку, проверить, является ли она вершиной, применить новый размер с помощью 'mxGeometry geometry = cell.getGeometry() ;. geometry.setWidth(); \t geometry.set Height(); ' Отображаемый график имеет новый размер, но, выбрав вершину (с двойным щелчком мыши по фигуре вершины) и удаляя выделение, вершина перерисовывается до прежнего размера. Любое предложение оценено. Благодарю. –

+0

* «Любое предложение оценено». * 1) Я уже дал вам это. 2) Принимая во внимание рекомендацию. Игнорирование рекомендаций, вероятно, позволит вам игнорировать людей, пытающихся помочь (бесплатно). –

ответ

0

благодарственное Андрею за ее терпение. Английский язык не мой, и иногда я ошибаюсь даже на итальянском (мой родной язык). Добавьте, что я новичок в Java. Новое даже в этом форуме (связанные правила, и это может быть не подходящее место для моего повтора). Я не читал ваше сообщение с должным вниманием.

Я поставил код, частичное решение, я надеюсь, что это более понятно.

package it.rex.view; 

public class StradarioViewBis2 extends JFrame { 

    private JPanel contentPane; 

    // listenableGraph is a complete graph done with JgraphT 
    public StradarioViewBis2(ListenableGraph<Incrocio, Strada> listenableGraph) { 

     JGraphXAdapter<Incrocio, Strada> graphAdapter = 
       new JGraphXAdapter<Incrocio, Strada>(listenableGraph); 

     //graphAdapter.getStylesheet().getDefaultEdgeStyle().put(mxConstants.STYLE_NOLABEL, "1"); //remove label from edge 

     graphAdapter.getModel().beginUpdate(); 
     try { 
      graphAdapter.clearSelection(); 
      graphAdapter.selectAll(); 
      Object[] cells = graphAdapter.getSelectionCells(); //here you have all cells 

      // Iterate into graph to change cells 
      for (Object c : cells) { 
       mxCell cell = (mxCell) c; //cast 
       mxGeometry geometry = cell.getGeometry(); 

       if (cell.isVertex()) { //isVertex 
        // Here I can change vertex dimensions 
        geometry.setWidth(40); 
        geometry.setHeight(40); 
       }else{ //is not a vertex, so u can get source and target 
        // cell.setStyle("orthogonalEdgeStyle"); 
        // cell.getChildAt(x); //Returns the child at the specified index. (target) 
       } 
      } 
     } 
     finally 
     { 
      graphAdapter.getModel().endUpdate(); 
     } 

     mxIGraphLayout layout = new mxCircleLayout(graphAdapter); // questo sistema le posizione degli elementi 

     layout.execute(graphAdapter.getDefaultParent()); 

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 550, 450); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 

     mxGraphComponent graphComponent = new mxGraphComponent(graphAdapter); // is JScrollPane extension 

     graphComponent.setPageVisible(true); 
     graphComponent.setBounds(30, 30, 300, 300); 
     contentPane.add(graphComponent); 

     //graphComponent.setEnabled(false); 
     graphComponent.getViewport().setBackground(Color.white); 
     ; 

    } 

} 

После нескольких попыток, я обнаружил, что размер вершины является обратно к исходному размеру, когда я изменить метку ячейки, а не при перемещении фокуса от ячейки.

Мне кажется, мне нужно изменить поведение графика по умолчанию, но я еще не обнаружил, как это сделать.

Это результат, после редактирования метки на верхней VETEX: enter image description here