首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在JgraphT中显示权重

在 JGraphT 中显示权重是指在图形中显示边的权重,即在两个顶点之间的边上显示连接它们的权重值。在 JGraphT 中,可以通过自定义边的渲染器来实现显示权重的功能。

以下是一个简单的示例代码,用于在 JGraphT 中显示权重:

代码语言:java
复制
import org.jgrapht.Graph;
import org.jgrapht.graph.DefaultWeightedEdge;
import org.jgrapht.graph.builder.GraphTypeBuilder;

import java.awt.*;
import java.awt.geom.Rectangle2D;

public class WeightedEdgeDemo {
    public static void main(String[] args) {
        // 创建一个有向图
        Graph<String, DefaultWeightedEdge> graph = GraphTypeBuilder
                .directed().weighted(true).allowingMultipleEdges(true).allowingSelfLoops(true)
                .vertexSupplier(new StringSupplier()).edgeSupplier(DefaultWeightedEdge::new)
                .buildGraph();

        // 添加顶点和边
        graph.addVertex("A");
        graph.addVertex("B");
        graph.addVertex("C");
        graph.addEdge("A", "B").setWeight(2.0);
        graph.addEdge("B", "C").setWeight(3.0);
        graph.addEdge("A", "C").setWeight(5.0);

        // 自定义边的渲染器
        JGraphXAdapter<String, DefaultWeightedEdge> jgxAdapter = new JGraphXAdapter<>(graph);
        mxGraphComponent graphComponent = new mxGraphComponent(jgxAdapter);
        graphComponent.getGraph().setEdgeLabels(true);
        graphComponent.getGraph().setHtmlLabels(true);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_EDGE, mxEdgeStyle.ElbowConnector);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR, mxConstants.NONE);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_FONTCOLOR, "#000000");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_STROKECOLOR, "#000000");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_POSITION, mxConstants.ALIGN_CENTER);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_FONTSIZE, "12");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_FONTCOLOR, "#000000");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_BORDERCOLOR, "#000000");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_BORDERWIDTH, "1");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_VERTICAL_ALIGN, mxConstants.ALIGN_TOP);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_ALIGN, mxConstants.ALIGN_CENTER);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_WIDTH, "80");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_HEIGHT, "20");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL, "");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_OVERFLOW, "hidden");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_PADDING, "2");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_BORDERSTYLE, mxConstants.LINE_STYLE_SOLID);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_HORIZONTAL_ALIGN, mxConstants.ALIGN_CENTER);

        // 显示图形
        JFrame frame = new JFrame("Weighted Edge Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(graphComponent);
        frame.pack();
        frame.setSize(800, 600);
        frame.setVisible(true);
    }
}

在上面的代码中,我们使用了 JGraphX 库来渲染图形,并且自定义了边的样式和标签。其中,我们将边的标签设置为空字符串,以便在边上显示权重值。

在 JGraphT 中,我们可以通过将权重值添加到边的属性中来实现显示权重的功能。具体来说,我们可以使用 setWeight() 方法将权重值添加到边的属性中,然后在自定义边的渲染器中获取权重值,并将其显示在边上。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

12分22秒

32.尚硅谷_JNI_让 C 的输出能显示在 Logcat 中.avi

11分42秒

5.在视频上显示弹幕.avi

1分1秒

DevOpsCamp 在实战中带你成长

373
6分5秒

063-在nginx 中关闭keepalive

16分13秒

06.在ListView中实现.avi

6分31秒

07.在RecyclerView中实现.avi

15秒

海盗船在咖啡中战斗

6分15秒

53.在Eclipse中解决冲突.avi

11分13秒

04.在ListView中播放视频.avi

5分32秒

07.在RecyclerView中播放视频.avi

9分37秒

09.在WebView中播放视频.avi

6分15秒

53.在Eclipse中解决冲突.avi

领券