algorithm - change node color entered by user - GraphStream - JAVA -


i working on application in have used graphstream library of dijkstra's shortest path algorithm

in application user enter n number of entries comma separated in jtextfield. have find shortest path between of entered numbers. have done need change color of nodes entered user. know command change color of node : node.addattribute("ui.style", "fill-color: blue;"); have used command change color of nodes how can change color of user entered nodes.

here code :

public class graphtest {      connection conn = null;     singlegraph graph;     statement stmt = null;     jlabel label;     jbutton show_graph;     jtextfield enter_numbers;     int = 0;     double zoomlevel = 1.0;     string result, result2;     imageicon loading;      public static void main(string[] args) throws classnotfoundexception, sqlexception {         graphtest graphtest = new graphtest();         graphtest.createconnection();     }      public graphtest() throws sqlexception {         jframe frame = new jframe("graph");         frame.setdefaultcloseoperation(jframe.exit_on_close);         @suppresswarnings("serial")         jpanel panel = new jpanel(new gridlayout()) {             @override             public dimension getpreferredsize() {                 return new dimension(1300, 600);             }         };         panel.setborder(borderfactory.createlineborder(color.blue, 5));          graph = new singlegraph("tutorial", false, true);         viewer viewer = new viewer(graph, viewer.threadingmodel.graph_in_another_thread);          final viewpanel viewpanel = viewer.adddefaultview(false);         viewer.enableautolayout();          graph.setautocreate(true);         graph.setstrict(false);         graph.addattribute("ui.quality");         graph.addattribute("ui.antialias");          label = new jlabel("enter numbers : ");         enter_numbers = new jtextfield(15);         font bigfont = enter_numbers.getfont().derivefont(font.plain, 17f);         enter_numbers.setfont(bigfont);         show_graph = new jbutton("show graph");          viewpanel.add(label);         viewpanel.add(enter_numbers);         viewpanel.add(show_graph);         show_graph.addactionlistener(showgraphlistener);          panel.add(viewpanel);         frame.add(panel);         frame.pack();         frame.setlocationrelativeto(null);         frame.setvisible(true);          viewpanel.addmousewheellistener(new mousewheellistener() {             public void mousewheelmoved(mousewheelevent e) {                 if (e.getwheelrotation() == -1) {                     zoomlevel = zoomlevel - 0.1;                     if (zoomlevel < 0.1) {                         zoomlevel = 0.1;                     }                     viewpanel.getcamera().setviewpercent(zoomlevel);                 }                 if (e.getwheelrotation() == 1) {                     zoomlevel = zoomlevel + 0.1;                     viewpanel.getcamera().setviewpercent(zoomlevel);                 }             }         });     }      private connection createconnection() throws classnotfoundexception, sqlexception {         class.forname("org.h2.driver");         conn = drivermanager.getconnection("jdbc:h2:file:g:/hs_data/h2_db/test", "sa", "sa");         return conn;     }      actionlistener showgraphlistener = new actionlistener() {         public void actionperformed(actionevent e) {             string user_input = enter_numbers.gettext();             if (user_input == null || user_input.isempty()) {                 joptionpane.showmessagedialog(null, "please enter atleast 2 numbers comma seperated");             } else {                 arraylist<string> items = new arraylist<string>(arrays.aslist(user_input.split("\\s*,\\s*")));                 try {                     showgraph(items);                 } catch (sqlexception e1) {                     e1.printstacktrace();                 }             }         }     };      private void showgraph(arraylist<string> items) throws sqlexception {          stmt = conn.createstatement();         resultset rs = stmt.executequery("select anumber,bnumber cdr limit 4500");         while (rs.next()) {             result = rs.getstring("anumber");             result2 = rs.getstring("bnumber");             graph.addnode(result);             graph.addnode(result2);             i++;             graph.addedge("string" + i, result, result2);             (node node : graph) {                 node.addattribute("ui.hide");             }             (edge edge : graph.geteachedge()) {                 edge.addattribute("ui.hide");             }         }         conn.close();          dijkstra dijkstra = new dijkstra(dijkstra.element.edge, null, null);         dijkstra.init(graph);          arraylist<string> rl = new arraylist<string>();         arraylist<string> lr = new arraylist<string>();         rl = items;          lr.addall(rl);         collections.reverse(lr);         (string anumber : rl) {             lr.remove(lr.size() - 1);             (string bnumber : lr) {                 dijkstra.setsource(graph.getnode(anumber));                 dijkstra.compute();                  (node node : dijkstra.getpathnodes(graph.getnode(bnumber))) {                     node.addattribute("ui.style", "fill-color: blue;");                     node.addattribute("ui.label", node.getid());                     node.removeattribute("ui.hide");                 }                  (edge edge : dijkstra.getpathedges(graph.getnode(bnumber))) {                     edge.addattribute("ui.style", "fill-color: red;");                     edge.removeattribute("ui.hide");                 }              }         }         dijkstra.clear();     } } 

any idea or have use change node color command ?


Comments

Popular posts from this blog

python - Selenium remoteWebDriver (& SauceLabs) Firefox moseMoveTo action exception -

html - How to custom Bootstrap grid height? -

transpose - Maple isnt executing function but prints function term -