GraphStream-JAVA中更好的图形可视化
我正在为java开发库。但我在这里面临一个问题。 我试图从数据库中查询10000条有2列的记录。图形为每行创建2个节点和一条边。 但是当我试着运行程序时,图形看起来非常复杂。请参见下图。 这是我的密码:GraphStream-JAVA中更好的图形可视化,java,swing,graph,graphstream,Java,Swing,Graph,Graphstream,我正在为java开发库。但我在这里面临一个问题。 我试图从数据库中查询10000条有2列的记录。图形为每行创建2个节点和一条边。 但是当我试着运行程序时,图形看起来非常复杂。请参见下图。 这是我的密码: public class GraphExplore { static Connection conn2; static String result, result2; static int totalRows, i; public static void ma
public class GraphExplore {
static Connection conn2;
static String result, result2;
static int totalRows, i;
public static void main(String args[]) throws SQLException {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
showData();
} catch (SQLException e) {
e.printStackTrace();
}
}
});
}
private static void showData() 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(640, 480);
}
};
panel.setBorder(BorderFactory.createLineBorder(Color.blue, 5));
Graph graph = new SingleGraph("Tutorial", false, true);
try {
Class.forName("org.h2.Driver");
conn2 = DriverManager.getConnection("jdbc:h2:file:G:/hs_data/h2_db/test", "sa", "sa");
} catch (Exception e) {
e.printStackTrace();
}
Statement stmt2 = conn2.createStatement();
ResultSet rs = stmt2.executeQuery("SELECT count(*) FROM cdr");
while (rs.next()) {
totalRows = rs.getInt(1);
}
ResultSet rs2 = stmt2.executeQuery("SELECT ANUMBER,BNUMBER FROM CDR LIMIT 1000");
while (rs2.next()) {
result = rs2.getString("ANUMBER");
result2 = rs2.getString("BNUMBER");
graph.addNode(result);
graph.addNode(result2);
for (i = 0; i < 1000; i++)
graph.addEdge("string" + i, result, result2);
}
graph.setAutoCreate(true);
graph.setStrict(false);
Viewer viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_GUI_THREAD);
ViewPanel viewPanel = viewer.addDefaultView(false);
viewer.enableAutoLayout();
panel.add(viewPanel);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
for (Node node : graph) {
node.addAttribute("ui.label", node.getId());
}
// graph.addAttribute("ui.stylesheet", "graph { fill-color: red; }");text-mode:
// hidden;
graph.addAttribute("ui.stylesheet", "node {size:12px;fill-color:#ff0000;}");
graph.addAttribute("ui.stylesheet", "edge { shape:angle ;fill-color:#222;}");
}
}
有谁能告诉我,如何更好地显示这张图。或者我必须使用其他可用的图表。我正在使用GraphStream的最基本功能。从中,获取对的引用,并使用它设置缩放百分比和中心
viewPanel.getCamera().setViewPercent(0.25);
viewPanel.getCamera().setViewCenter(0, 0, 0);
选择任何节点或viewPanel增益后
使用←, ↑, → 或↓ 潘的钥匙
使用向上翻页和向下翻页键进行缩放
有什么好运气吗?是的,我尝试过这些,但在这一行viewPanel上出现错误。setViewCenter440000,2503000,0;它要求我将强制转换添加到ViewPanel您可以通过View View=viewer.getDefaultView获得引用吗?我使用的是ViewPanel ViewPanel=viewer.addDefaultViewfalse;现在,我已经成功地通过这行代码启用了缩放viewPanel.getCamera.setViewPercent0.25;但如何通过向左或向右移动来查看图形的其他部分呢?一旦选择了任何节点,就可以使用箭头键进行平移。
viewPanel.requestFocusInWindow();