シンプルな Graph
グラフを描画するサンプルです。

import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import prefuse.*;
import prefuse.action.*;
import prefuse.action.assignment.*;
import prefuse.action.layout.graph.*;
import prefuse.activity.*;
import prefuse.controls.*;
import prefuse.data.*;
import prefuse.util.*;
import prefuse.util.ui.*;
import prefuse.visual.*;
/*
クラス定義。JPanel を継承している。
*/
public class SimpleGraph extends JPanel {
/*
スタティックフィールド。グループ名を定義している。
*/
public static final String GRAPH = "graph";
public static final String NODES = "graph.nodes";
public static final String EDGES = "graph.edges";
/*
コンストラクタ。
*/
public SimpleGraph(Graph g) {
Visualization m_vis;
/*
Visualization クラスのインスタンスを作り、Graph データを与える。
*/
m_vis = new Visualization();
m_vis.addGraph(GRAPH, g);
/*
animate からアニメーションの毎に呼ばれる描画アクション
VisualItem へ書き込んでいる。
*/
ColorAction fill = new ColorAction(NODES,
VisualItem.FILLCOLOR, ColorLib.rgb(200,200,230));
fill.add(VisualItem.FIXED, ColorLib.rgb(255,100,100));
fill.add(VisualItem.HIGHLIGHT, ColorLib.rgb(255,200,125));
/*
再描画アクション
*/
ActionList animate = new ActionList(Activity.INFINITY);
animate.add(fill);
animate.add(new RepaintAction());
animate.add(new ForceDirectedLayout(GRAPH));
animate.add(new ColorAction(NODES, VisualItem.STROKECOLOR,
ColorLib.rgb(0,0,0)));
animate.add(new ColorAction(EDGES, VisualItem.STROKECOLOR,
ColorLib.rgb(0,0,0)));
/*
アクションの登録
*/
m_vis.putAction("animate",animate);
m_vis.run("animate");
/*
表示の定義
*/
Display display = new Display(m_vis);
display.setSize(700,700);
display.pan(350, 350);
display.setForeground(Color.GRAY);
display.setBackground(Color.WHITE);
/*
コントロールの追加
*/
display.addControlListener(new DragControl());
display.addControlListener(new PanControl());
display.addControlListener(new ZoomControl());
display.addControlListener(new WheelZoomControl());
display.addControlListener(new ZoomToFitControl());
display.addControlListener(new NeighborHighlightControl());
display.addControlListener(new ToolTipControl("label"));
/*
コンポーネントとして表示を追加。
*/
add(display);
}
public static void main(String[] args) {
/*
グラフの定義
*/
Graph graph=GraphLib.getGrid(3,10);
/*
フレームの作成
*/
UILib.setPlatformLookAndFeel();
JFrame frame = new JFrame();
frame.setContentPane(new SimpleGraph(graph));
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
最終更新:2009年02月06日 08:17