2014-01-04 6 views
0

Я работаю над отображающими операциями AVL дерева в графическом виде с использованием JUNG2 (без анимации)OrderedKAryTree неправильно отображается (JUNG2)

Я использую OrderedKAryTree для того же. Но есть некоторые проблемы с рендерингом. Все края отображаются от корня до верхнего левого угла кадра. Как показано в этом screenshot

Вот мой код визуализатор

 vv = new VisualizationViewer<Integer, Integer>(
      new TreeLayout<Integer, Integer>(graph), 
      new Dimension(500, 400)); 
     vv.setBackground(Color.white); 
     vv.getRenderContext().setEdgeShapeTransformer(
      new EdgeShape.Line<Integer, Integer>()); 
     vv.getRenderContext().setVertexLabelTransformer(
      new ToStringLabeller<Integer>()); 

     frame.getContentPane().add(vv, BorderLayout.CENTER); 
     frame.getContentPane().validate(); 

Я не мог понять, почему это происходит. Кроме того, тот же код работает отлично, если я использую DelegateTree, хотя заказ не выполняется.

Пожалуйста, помогите. Заранее спасибо!

ответ

0

Обнаружил решение. Вместо того чтобы использовать OrderedKAryTree использовать DelegateTree с DirectedOrderedSparceGraph

Вот как график должен быть инициализирован:

DelegateTree<V, E> graph = new DelegateTree<V, E>(
    new DirectedOrderedSparseMultigraph<V, E>()); 

В и Е может быть любой Object.

Это не поможет устранить проблему, возникшую с ошибкой, но может помочь вам отобразить двоичное дерево поиска.

+0

Итак, вы говорите, что единственное изменение, которое вы сделали, это заменить вашу реализацию графика? Просьба уточнить, поскольку это кажется неправдоподобным в зависимости от того, как работают классы. –

+0

Да, это единственное, что я изменил. На самом деле вы можете использовать DelegateTree вместо OrderedKAryTree, чтобы реализовать оба интерфейса Forest, Graph и Tree. Конечно, их реализация отличается от того, что у DelegateTree нет, это ограничение на число дочерних узлов узла, о котором я должен был заботиться в своем коде. – SPatil

Смежные вопросы