How to draw nodes and edges on a custom java swing component that extends JPanel with GraphStream (or another library)? -
i'm creating user interface java swing program should able allow user create network of nodes, connected edges. user allowed label nodes , edges.
the ui has custom graphical component extends jpanel , meaningful on it's own, having working operations such zoom , drag. i'm trying use graphstream library (http://graphstream-project.org/) turn custom panel view supports graphstream graphs. since graphstream comes defaultview class able show basic graphs out of box , extends jpanel, decided modify map component extends defaultview. class definition background component now
public class custompanel extends defaultview implements icustomlistener { public custompanel(viewer viewer, string identifier, graphrenderer renderer) { super(viewer, identifier, renderer); ... } } however, component fails display graphs or drawing capabilities. how proceeded form test graph
graph graph = new graphicgraph("embedded"); viewer viewer = new viewer(graph, viewer.threadingmodel.graph_in_gui_thread); node = graph.addnode("a"); a.addattribute("xy", 0, 0); node b = graph.addnode("b"); b.addattribute("xy", 10, 0); node c = graph.addnode("c"); c.addattribute("xy", 10, 10); graph.addedge("ab","a","b"); //this assume graphstream magic should happen. custompanel mypanel = new custompanel(viewer, "defaultview", viewer.newgraphrenderer()); viewer.addview(mypanel); mypanel.display((graphicgraph)(graph), true); i able display same graph
viewer.adddefaultview(true); but opens in new window.
so doing wrong or possible display graphs graphstream on custom components? if there library thankful know. aware of jung2 , java2d have not tried them yet. live solution opens editor in window, still need custompanel background.
not sure want do. if want add graphstream view own gui don't need extend defaultview. viewer created ok need insert new view in gui :
// create view *without* jframe view view = viewer.adddefaultview(false); view.setpreferredsize(new dimension(600, 400)); jframe f = new jframe("your gui"); // add view components (jframe, jpanel...) f.add(view, borderlayout.center); // add other gui stuff here... f.setdefaultcloseoperation(jframe.exit_on_close); f.pack(); f.setvisible(true);
Comments
Post a Comment