java - 组打破了 JGraphX 中的层次布局

标签 java swing jgraphx

我发现,如果我将组引入到采用分层布局布局的简单图表中,则该组的位置不正确。

例如,这是一个简单的图表:

public class HierarchicalLayoutWithGrouping extends JFrame {

    public HierarchicalLayoutWithGrouping() {
        super("Hierarchical Layout With Grouping Test");

        mxGraph graph = new mxGraph();
        Object parent = graph.getDefaultParent();

        graph.getModel().beginUpdate();
        try {
            Object transfer1 = graph.insertVertex(parent, null, "Transfer Data1.csv", 0, 0, 100, 40);
            Object transfer2 = graph.insertVertex(parent, null, "Transfer Data2.csv", 0, 0, 100, 40);
            Object load1 = graph.insertVertex(parent, null, "Load Data1.csv", 0, 0, 100, 40);
            Object load2 = graph.insertVertex(parent, null, "Load Data1.csv", 0, 0, 100, 40);
            graph.insertEdge(parent, null, null, transfer1, load1);
            graph.insertEdge(parent, null, null, transfer2, load2);
            Object calculate = graph.insertVertex(parent, null, "Calculate", 0, 0, 100, 40);
            graph.insertEdge(parent, null, null, load1, calculate);
            graph.insertEdge(parent, null, null, load2, calculate);

            // Object loads = graph.insertVertex(parent, null, "Loads", 0, 0, 200, 400, "shape=swimlane;");
            // graph.groupCells(loads, 5, new Object[] { load1, load2 });

            mxHierarchicalLayout layout = new mxHierarchicalLayout(graph, SwingConstants.WEST);
            layout.execute(parent);

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

        mxGraphComponent graphComponent = new mxGraphComponent(graph);
        getContentPane().add(graphComponent);
    }

    public static void main(String[] args) {
        HierarchicalLayoutWithGrouping frame = new HierarchicalLayoutWithGrouping();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 450);
        frame.setVisible(true);
    }
}

产生这个漂亮的图表:

enter image description here

但是如果我取消注释以下行:

            Object loads = graph.insertVertex(parent, null, "Loads", 0, 0, 200, 400, "shape=swimlane;");
            graph.groupCells(loads, 5, new Object[] { load1, load2 });

我明白了:

enter image description here

我已经在 mxHierarchicalLayout 上尝试了各种选项,但尚未找到任何有效的方法。 如何才能将组布局在正确的位置?

谢谢。

最佳答案

我发现,分组框获得另一个层次结构作为未分组的节点。这就是每个组框移动到新行的原因。我认为除了编写自己的布局算法或只是重写在布局执行期间生成层次结构属性的方法之外,没有其他可能性。

关于java - 组打破了 JGraphX 中的层次布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18599352/

相关文章:

java - JGraphX 图中边不可见

java - Gson - 将任何空值序列化为空字符串

java - 按特定字符序列将文本文件拆分为多个文件

java - 更改启动图标

java - 将 ActionListener 添加到 JGraphX 中的 mxcell

java - JGraphX 正在破坏 Swing 组件的界限

java - 当使用 Jackson XmlWrapper 在类里面排名第二时,无法反序列化(转换)未包装的列表

java - 我可以修改一个 "referenced"整型变量吗?

java - Java 定时器中的意外错误

java - 如何在中间java中对齐按钮