⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 examplemain.java

📁 JPowerGraph is a Java library for creating directed graphs for Swing. It supports graph movement, se
💻 JAVA
字号:
package net.sourceforge.jpowergraph.examples;

import java.awt.Color;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import net.sourceforge.jpowergraph.DefaultEdge;
import net.sourceforge.jpowergraph.DefaultGraph;
import net.sourceforge.jpowergraph.Node;
import net.sourceforge.jpowergraph.examples.nodes.NodeType1;
import net.sourceforge.jpowergraph.examples.nodes.NodeType2;
import net.sourceforge.jpowergraph.examples.nodes.NodeType3;
import net.sourceforge.jpowergraph.layout.Layouter;
import net.sourceforge.jpowergraph.layout.SpringLayoutStrategy;
import net.sourceforge.jpowergraph.lens.CursorLens;
import net.sourceforge.jpowergraph.lens.LegendLens;
import net.sourceforge.jpowergraph.lens.LensSet;
import net.sourceforge.jpowergraph.lens.NodeFilterLens;
import net.sourceforge.jpowergraph.lens.NodeSizeLens;
import net.sourceforge.jpowergraph.lens.RotateLens;
import net.sourceforge.jpowergraph.lens.TooltipLens;
import net.sourceforge.jpowergraph.lens.TranslateLens;
import net.sourceforge.jpowergraph.lens.ZoomLens;
import net.sourceforge.jpowergraph.manipulator.contextandtooltip.ContextMenuAndToolTipManipulator;
import net.sourceforge.jpowergraph.manipulator.contextandtooltip.DefaultContextMenuListener;
import net.sourceforge.jpowergraph.manipulator.contextandtooltip.DefaultToolTipListener;
import net.sourceforge.jpowergraph.manipulator.dragging.DraggingManipulator;
import net.sourceforge.jpowergraph.manipulator.edgecreator.DefaultEdgeCreatorListener;
import net.sourceforge.jpowergraph.manipulator.edgecreator.EdgeCreatorManipulator;
import net.sourceforge.jpowergraph.manipulator.selection.DefaultNodeSelectionModel;
import net.sourceforge.jpowergraph.manipulator.selection.SelectionManipulator;
import net.sourceforge.jpowergraph.painters.LineEdgePainter;
import net.sourceforge.jpowergraph.painters.ShapeNodePainter;
import net.sourceforge.jpowergraph.pane.JGraphPane;
import net.sourceforge.jpowergraph.pane.JGraphScrollPane;
import net.sourceforge.jpowergraph.pane.JGraphViewPane;
import net.sourceforge.jpowergraph.viewcontrols.RotateControlPanel;
import net.sourceforge.jpowergraph.viewcontrols.ZoomControlPanel;

/**
 * @author Mick Kerrigan
 *
 * Created on 03-Aug-2005
 * Committed by $Author: morcen $
 *
 * $Source: /cvsroot/jpowergraph/swing/src/net/sourceforge/jpowergraph/examples/ExampleMain.java,v $,
 * @version $Revision: 1.3 $ $Date: 2005/08/12 13:07:36 $
 */

public class ExampleMain {
    
    private static Color light_blue;
    private static Color dark_blue;
    private static Color light_red;
    private static Color dark_red;
    private static Color light_green;
    private static Color dark_green;
    private static Color black;
    private static Color gray;

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        JFrame jf = new JFrame();

        DefaultGraph graph = createGraph();
        JGraphPane jGraphPane = new JGraphPane(graph);

        ArrayList filterAbleNodes = new ArrayList();
        filterAbleNodes.add(NodeType2.class);
        filterAbleNodes.add(NodeType3.class);

        TranslateLens m_translateLens=new TranslateLens();
        ZoomLens m_zoomLens=new ZoomLens();
        RotateLens m_rotateLens = new RotateLens();
        CursorLens m_draggingLens = new CursorLens();
        TooltipLens m_tooltipLens = new TooltipLens();
        LegendLens m_legendLens = new LegendLens();
        NodeSizeLens m_nodeSizeLens = new NodeSizeLens();
        NodeFilterLens m_nodeFilterLens = new NodeFilterLens(filterAbleNodes);
        LensSet lensSet = new LensSet();
        lensSet.addLens(m_rotateLens);
        lensSet.addLens(m_translateLens);
        lensSet.addLens(m_zoomLens);
        lensSet.addLens(m_draggingLens);
        lensSet.addLens(m_tooltipLens);
        lensSet.addLens(m_legendLens);
        lensSet.addLens(m_nodeSizeLens);
        lensSet.addLens(m_nodeFilterLens);
        jGraphPane.setLens(lensSet);
        
        jGraphPane.addManipulator(new SelectionManipulator(new DefaultNodeSelectionModel(graph), -1, MouseEvent.CTRL_MASK));
        jGraphPane.addManipulator(new DraggingManipulator(m_draggingLens, -1));
        jGraphPane.addManipulator(new EdgeCreatorManipulator(m_draggingLens, new DefaultEdgeCreatorListener(graph)));
        jGraphPane.addManipulator(new ContextMenuAndToolTipManipulator(jGraphPane, new DefaultContextMenuListener(graph, m_legendLens, m_zoomLens, ZoomControlPanel.DEFAULT_ZOOM_LEVELS, m_rotateLens, RotateControlPanel.DEFAULT_ROTATE_ANGLES), new DefaultToolTipListener(), m_tooltipLens));
        
        light_blue = new Color(102, 204, 255);
        dark_blue = new Color(0, 153, 255);
        light_red = new Color(255, 102, 102);
        dark_red = new Color(204, 51, 51);
        light_green = new Color(153, 255, 102);
        dark_green = new Color(0, 204, 0);
        black = Color.BLACK;
        gray = Color.GRAY;
        
        jGraphPane.setNodePainter(NodeType1.class, new ShapeNodePainter(ShapeNodePainter.RECTANGLE, light_blue, dark_blue, black));
        jGraphPane.setNodePainter(NodeType2.class, new ShapeNodePainter(ShapeNodePainter.ELLIPSE, light_red, dark_red, black));
        jGraphPane.setNodePainter(NodeType3.class, new ShapeNodePainter(ShapeNodePainter.TRIANGLE, light_green, dark_green, black));
        jGraphPane.setDefaultEdgePainter(new LineEdgePainter(gray, gray, gray));
        jGraphPane.setAntialias(true);
        
        Layouter m_layouter = new Layouter(new SpringLayoutStrategy(graph));
        m_layouter.start();
        
        jf.addComponentListener(new ComponentAdapter() {
            public void componentHidden(ComponentEvent e) {
                System.exit(0);
            }
        });
        
        JGraphScrollPane scroll = new JGraphScrollPane(jGraphPane, m_translateLens);
        JGraphViewPane view = new JGraphViewPane(scroll, m_zoomLens, m_rotateLens, m_draggingLens, m_tooltipLens, m_legendLens, m_nodeSizeLens);
        
        jf.getContentPane().add(view);
        jf.setSize(800, 500);
        jf.setVisible(true);
    }
    
    public static DefaultGraph createGraph(){
        DefaultGraph graph = new DefaultGraph();
        ArrayList nodes = new ArrayList();
        ArrayList edges = new ArrayList();
        
        Node n1 = new NodeType1("Node 1");
        Node sn1 = new NodeType2("Node 2");
        Node sn2 = new NodeType2("Node 3");
        Node sn3 = new NodeType2("Node 4");
        Node sn4 = new NodeType2("Node 5");
        Node sn5 = new NodeType2("Node 6");
        Node ssn1 = new NodeType3("Node 7");
        Node ssn2 = new NodeType3("Node 8");
        
        nodes.add(n1);
        nodes.add(sn1);
        nodes.add(sn2);
        nodes.add(sn3);
        nodes.add(sn4);
        nodes.add(sn5);
        nodes.add(ssn1);
        nodes.add(ssn2);
        
        edges.add(new DefaultEdge(n1, sn1));
        edges.add(new DefaultEdge(n1, sn2));
        edges.add(new DefaultEdge(n1, sn3));
        edges.add(new DefaultEdge(n1, sn4));
        edges.add(new DefaultEdge(n1, sn5));
        edges.add(new DefaultEdge(sn2, ssn1));
        edges.add(new DefaultEdge(sn2, ssn2));
       
        graph.addElements(nodes, edges);
        return graph;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -