Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何自定义预使用中的渲染。使用前布局中自定义图像时出现问题_Java_Visualization_Prefuse - Fatal编程技术网

Java 如何自定义预使用中的渲染。使用前布局中自定义图像时出现问题

Java 如何自定义预使用中的渲染。使用前布局中自定义图像时出现问题,java,visualization,prefuse,Java,Visualization,Prefuse,大家好 我已经编写了一个java应用程序来以不同的布局显示图像。我能够正确地显示不同的布局,但有时图像会重叠。在我的应用程序中,有超过20/30个节点和一对具有6到10条边的节点。图像大小为50*50。由于有10条边,节点将重叠,即图像将重叠在另一个图像上。我怎样才能解决这个问题 我们将非常感谢您的帮助 我的代码如下 导入javax.swing.JFrame; 导入java.awt.image.buffereImage; 导入javax.imageio.imageio; 导入java.util

大家好

我已经编写了一个java应用程序来以不同的布局显示图像。我能够正确地显示不同的布局,但有时图像会重叠。在我的应用程序中,有超过20/30个节点和一对具有6到10条边的节点。图像大小为50*50。由于有10条边,节点将重叠,即图像将重叠在另一个图像上。我怎样才能解决这个问题

我们将非常感谢您的帮助

我的代码如下


导入javax.swing.JFrame;
导入java.awt.image.buffereImage;
导入javax.imageio.imageio;
导入java.util。;
导入java.io。;
导入java.awt.Font

导入prefuse.Constants; 导入prefuse.Display; 导入使用前可视化; 导入prefuse.action.ActionList; 导入prefuse.action.repaitaction; 导入prefuse.action.assignment.ColorAction; 导入prefuse.action.assignment.FontAction; 导入prefuse.action.assignment.DataColorAction; 导入prefuse.action.layout.graph.ForceDirectedLayout; 导入prefuse.action.layout.graph。; 导入prefuse.action.layout。; 导入prefuse.activity.activity; 导入prefuse.controls.DragControl; 导入prefuse.controls.PanControl; 导入prefuse.controls.ZoomControl; 导入prefuse.data.Graph; 导入prefuse.data.io.DataIOException; 导入prefuse.data.io.GraphMLReader; 导入prefuse.render.DefaultRenderFactory; 导入prefuse.render.LabelRenderer; 导入prefuse.util.ColorLib; 导入prefuse.visual.VisualItem; 导入prefuse.visual.*; 导入prefuse.util.FontLib; 导入prefuse.action.assignment.DataSizeAction

导入prefuse.data.*; 导入prefuse.render.ImageFactory

公共类布局示例{

publicstaticvoidmain(字符串[]argv)引发异常{
图=空;
试一试{
graph=newgraphmlreader().readGraph(“/graphs.xml”);
}捕获(DataIOE异常){
e、 printStackTrace();
System.err.println(“错误加载图形。正在退出…”);
系统出口(1);
}
ImageFactory ImageFactory=新ImageFactory(100100);
尝试
{
//加载图像并构建imageFactory。
字符串图像[]=新字符串[3];
images[0]=“data/images/switch.png”;
images[1]=“data/images/ip_network.png”;
images[2]=“data/images/router.png”;
字符串[]名称=新字符串[]{“交换机”、“网络”、“路由器”};
BuffereImage img=null;
对于(int i=0;i
}

谢谢 拉维库马尔


import javax.swing.JFrame;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO; 
import java.util.;
import java.io.;
import java.awt.Font;

import prefuse.Constants; import prefuse.Display; import prefuse.Visualization; import prefuse.action.ActionList; import prefuse.action.RepaintAction; import prefuse.action.assignment.ColorAction; import prefuse.action.assignment.FontAction; import prefuse.action.assignment.DataColorAction; import prefuse.action.layout.graph.ForceDirectedLayout; import prefuse.action.layout.graph.; import prefuse.action.layout.; import prefuse.activity.Activity; import prefuse.controls.DragControl; import prefuse.controls.PanControl; import prefuse.controls.ZoomControl; import prefuse.data.Graph; import prefuse.data.io.DataIOException; import prefuse.data.io.GraphMLReader; import prefuse.render.DefaultRendererFactory; import prefuse.render.LabelRenderer; import prefuse.util.ColorLib; import prefuse.visual.VisualItem; import prefuse.visual.*; import prefuse.util.FontLib; import prefuse.action.assignment.DataSizeAction;

import prefuse.data.*; import prefuse.render.ImageFactory;

public class LayoutExample {

public static void main(String[] argv) throws Exception {

    Graph graph = null;
    try {

        graph = new GraphMLReader().readGraph("/graphs.xml");
    } catch ( DataIOException e ) {
        e.printStackTrace();
        System.err.println("Error loading graph. Exiting...");
        System.exit(1);
    }

ImageFactory imageFactory = new ImageFactory(100,100);

try
{
    //load images and construct imageFactory.
    String images[] = new String[3];
    images[0] = "data/images/switch.png";
    images[1] = "data/images/ip_network.png";
    images[2] = "data/images/router.png";

    String[] names = new String[] {"Switch","Network","Router"};
    BufferedImage img = null;

    for(int i=0; i < images.length ; i++)
    {
        try {
            img = ImageIO.read(new File(images[i]));
            imageFactory.addImage(names[i],img);
        }
        catch (IOException e){
        }
    }


}
catch(Exception exp)
{

}


    Visualization vis = new Visualization();
    vis.add("graph", graph);

LabelRenderer nodeRenderer = new LabelRenderer("name", "type");
    nodeRenderer.setVerticalAlignment(Constants.BOTTOM);
    nodeRenderer.setHorizontalPadding(0);
    nodeRenderer.setVerticalPadding(0);
    nodeRenderer.setImagePosition(Constants.TOP);
    nodeRenderer.setMaxImageDimensions(100,100); 

    DefaultRendererFactory drf = new DefaultRendererFactory();
    drf.setDefaultRenderer(nodeRenderer);
    vis.setRendererFactory(drf); 

    ColorAction nText = new ColorAction("graph.nodes", VisualItem.TEXTCOLOR);
    nText.setDefaultColor(ColorLib.gray(100));


    ColorAction nEdges = new ColorAction("graph.edges", VisualItem.STROKECOLOR);
    nEdges.setDefaultColor(ColorLib.gray(100));

    // bundle the color actions
    ActionList draw = new ActionList();

     //MAD - changing the size of the nodes dependent on the weight of the people
    final DataSizeAction dsa = new DataSizeAction("graph.nodes","size");        
    draw.add(dsa);

    draw.add(nText);
    draw.add(new FontAction("graph.nodes", FontLib.getFont("Tahoma",Font.BOLD, 12)));
    draw.add(nEdges);

    vis.putAction("draw", draw);



  ActionList layout = new ActionList(Activity.DEFAULT_STEP_TIME);


  BalloonTreeLayout balloonlayout = new BalloonTreeLayout("graph",50);
  layout.add(balloonlayout); 


    Display d = new Display(vis);

    vis.putAction("layout", layout);


// start up the animated layout
    vis.run("draw");
vis.run("layout");


    d.addControlListener(new DragControl());
    // pan with left-click drag on background
    d.addControlListener(new PanControl()); 
    // zoom with right-click drag
    d.addControlListener(new ZoomControl()); 

    // -- 6. launch the visualization -------------------------------------






    // create a new window to hold the visualization
    JFrame frame = new JFrame("prefuse example");
    // ensure application exits when window is closed
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(d);
    frame.pack();           // layout components in window
    frame.setVisible(true); // show the window

}