シンプルな 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