我无法显示具有自动布局的JGraphX.
我的程序(下面的代码)创建一个这样的输出:

一个足够的结果可能看起来像这样(我用手移动它们):

我不必坚持JGraphX.我还测试JUNG和JGraphT.但到目前为止,这是我最好的结果.我需要的是我的数据视图,其上有定向的eges和一些标签.
我制作了一个示例代码,展示了它是如何创建的.它类似于http://forum.jgraph.com/questions/4810/how-to-layout-nodes-automatically-using-fast-organic-layout.有一个评论从2012年,提到相同的问题"[...]但是我注意到节点有时重叠,你知道一种方法来解决这个问题,我已经玩了属性,它似乎很随意.一般来说如何改善外观的任何建议?"
public class Test extends JFrame {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(800, 800);
f.setLocation(300, 200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final mxGraph graph = new mxGraph();
mxGraphComponent graphComponent = new mxGraphComponent(graph);
f.getContentPane().add(graphComponent, BorderLayout.CENTER);
f.setVisible(true);
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try {
Object start = graph.insertVertex(parent, "start", "start", 100,
100, 80, 30);
for (int i = 0; i < 10; i++) {
Object a = graph.insertVertex(parent, …Run Code Online (Sandbox Code Playgroud) 有谁知道如何将JGraphx导出为任何格式的图像?如果没有,那么有没有人知道任何其他java库,它将让我创建简单的图表,然后将其保存为图像?
我在手册或SO上找不到答案.我想用JGraphX制作一个显示一些边缘和边缘的图形,但我不希望用户能够移动任何东西,也不希望那些绿色编辑框出现在涡流或边缘上.它只是为了显示.
我试过这个"Hello World"例子的修改无济于事.有什么建议?
package com.mxgraph.examples.swing;
import java.util.Hashtable;
import javax.swing.JFrame;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.util.mxConstants;
import com.mxgraph.view.mxGraph;
import com.mxgraph.view.mxStylesheet;
public class HelloWorld extends JFrame
{
/**
*
*/
private static final long serialVersionUID = -2707712944901661771L;
public HelloWorld()
{
super("Hello, World!");
mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();
//my addition of a stylesheet, I used it on the first node to see if it mad
//a difference, it didn't regarding dragability//////////////////////////////
mxStylesheet stylesheet = graph.getStylesheet();
Hashtable<String, Object> style = new Hashtable<String, …Run Code Online (Sandbox Code Playgroud) 我想让JGraphX图形组件(https://github.com/jgraph/jgraphx)的背景成为一种特定的颜色.我尝试了任何Swing组件的标准调用:
graphComponent.setBackground(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)
但这没有效果.我试图强制重新组装组件,没有运气.呼叫是否不正确,还是有某种特定方式强制刷新?
我一直在使用JGraphX来显示一些数据(简单的离散图),我想知道如何用JGraphX库做以下事情:
谢谢,ExtremeCoder
我正在使用 JgraphX 构建图表。有向图表示道路和交叉路口。对于每条路线,我定义两条边,每个方向一条。
结果,图的图像的两条边(代表道路)重叠。我怎样才能避免这种情况?顶点是否有一些东西,例如边缘的锚点?如果是这样,我该如何定义它们?
这是我用来显示图表的代码
package it.rex.view;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import org.jgrapht.ListenableGraph;
import org.jgrapht.ext.JGraphXAdapter;
import org.jgrapht.graph.ListenableDirectedGraph;
import com.mxgraph.layout.mxCircleLayout;
import com.mxgraph.layout.mxIGraphLayout;
import com.mxgraph.swing.mxGraphComponent;
//import grafotest1.DemoWeightedGraph.MyEdge;
import it.rex.model.Incrocio;
import it.rex.model.Strada;
import javax.swing.JScrollPane;
public class StradarioView extends JFrame {
/**
* Create the frame.
*/
public StradarioView(ListenableGraph<Incrocio, Strada> listenableGraph) {
// Graph come from JgraphT
JGraphXAdapter<Incrocio, Strada> graphAdapter =
new JGraphXAdapter<Incrocio, Strada>(listenableGraph);
mxIGraphLayout layout = new mxCircleLayout(graphAdapter);
layout.execute(graphAdapter.getDefaultParent());
mxGraphComponent graphComponent = new mxGraphComponent(graphAdapter);
getContentPane().add(graphComponent, …Run Code Online (Sandbox Code Playgroud) 我尝试在JGraphx中显示图表.只要我使用有向图形,一切都很好,但当我试图显示一个无向的图形时,它显示方向.
代码来自jgrapht的演示.
package org.jgrapht.demo;
import com.mxgraph.layout.*;
import com.mxgraph.swing.*;
import java.awt.*;
import java.nio.file.FileSystem;
import javax.swing.*;
import org.jgrapht.*;
import org.jgrapht.ext.*;
import org.jgrapht.graph.*;
/**
* A demo applet that shows how to use JGraphX to visualize JGraphT graphs.
* Applet based on JGraphAdapterDemo.
*
* @since July 9, 2013
*/
public class JGraphXAdapterDemo
extends JApplet
{
private static final long serialVersionUID = 2202072534703043194L;
private static final Dimension DEFAULT_SIZE = new Dimension(530, 320);
private JGraphXAdapter<String, DefaultEdge> jgxAdapter;
/**
* An alternative starting point for …Run Code Online (Sandbox Code Playgroud) 我正在尝试解决需要在 Swing 中显示图形的任务。找到了JGraph框架(现在称为 JGraphX)。在示例中,该graph.insertVertex(...)方法用于添加顶点和graph.insertEdge(...)边缘的方法 - 好吧,它工作正常。
但是之后如何删除该顶点?