Как передать границы на Узлы для размещения, с Prefuse-библиотекой - PullRequest
0 голосов
/ 28 июня 2018

Я использую Prefuse-библиотеку для размещения узлов в приложении JavaFX (вообще без Swing), и меня особенно интересует RadialTreeLayout.

Моя проблема в том, что мои узлы - это не просто кружки, но рядом с ними есть метка слева или справа (в зависимости от того, какой стороной является родительский узел). Так что текст узлов иногда перекрывается.

Просматривая исходный код RadialTreeLayout.java в Prefuse, кажется, что компоновка может быть достаточно умной, чтобы учитывать узлы переменного размера. Я могу ошибаться, так как не понимаю алгоритм, но Javadoc говорит:

"... Диаметры узла учитываются для улучшения распределения пространства для узлов переменного размера. "

Но я думаю, что мне даже не нужны узлы переменного размера, мне просто нужно дать им фиксированный нестандартный размер, по крайней мере, для начала.

И вот мой актуальный вопрос: Как передать ширину / высоту алгоритму макета в качестве параметров? Я вполне уверен, что это делается с помощью методов Node.setXXX, но я не знаю правильных ключей / вызовов / синтаксиса.

У меня есть объект Graph, заполненный узлами:

Table nodeData = new Table();
nodeData.addColumn("data", NodeData.class);

Table edgeData = new Table(0, 1);
edgeData.addColumn(Graph.DEFAULT_SOURCE_KEY, int.class);
edgeData.addColumn(Graph.DEFAULT_TARGET_KEY, int.class);

Graph graph = new Graph(nodeData, edgeData, false);

Node n1 = graph.addNode();
NodeData data = new NodeData(); // My own "data"-class
data.title = "Root Node";
n1.set("data", data);

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

...