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

📄 hello.java

📁 JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流控件
💻 JAVA
字号:
package flow.graph.test;

import java.awt.Color;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.Iterator;import javax.swing.JFrame;
import javax.swing.JScrollPane;import org.jgraph.JGraph;
import org.jgraph.graph.DefaultCellViewFactory;
import org.jgraph.graph.DefaultEdge;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.DefaultGraphModel;
import org.jgraph.graph.DefaultPort;
import org.jgraph.graph.GraphConstants;
import org.jgraph.graph.GraphLayoutCache;
import org.jgraph.graph.GraphModel;public class Hello {public static void main(String[] args) {
   // 定义一个存放cell的集合类
   ArrayList<DefaultGraphCell> cells = new ArrayList<DefaultGraphCell>();   // model用于控制整个模型显示属性等,view用于控制你的图形显示属性,这里都用默认即可
   GraphModel model = new DefaultGraphModel();
   GraphLayoutCache view = new GraphLayoutCache(model,
     new DefaultCellViewFactory());   // JGraph对象
   JGraph graph = new JGraph(model, view);   // 建立你的第一个vertex对象
   cells.add(new DefaultGraphCell(new String("Hello")));
   GraphConstants.setBounds(cells.get(0).getAttributes(),
     new Rectangle2D.Double(20, 20, 40, 20));
   // 设置颜色和透明属性
   GraphConstants.setGradientColor(cells.get(0).getAttributes(),
     Color.orange);
   GraphConstants.setOpaque(cells.get(0).getAttributes(), true);
   // 为这个vertex加入一个port
   DefaultPort port0 = new DefaultPort();
   cells.get(0).add(port0);   // 同理加入第二个vertex
   cells.add(new DefaultGraphCell(new String("World")));
   GraphConstants.setBounds(cells.get(1).getAttributes(),
     new Rectangle2D.Double(200, 200, 40, 20));
   GraphConstants
     .setGradientColor(cells.get(1).getAttributes(), Color.red);
   GraphConstants.setOpaque(cells.get(1).getAttributes(), true);
   DefaultPort port1 = new DefaultPort();
   cells.get(1).add(port1);   // 同理加入第三个vertex
   cells.add(new DefaultGraphCell(new String("Scorpio")));
   GraphConstants.setBounds(cells.get(2).getAttributes(),
     new Rectangle2D.Double(20, 300, 50, 20));
   GraphConstants.setGradientColor(cells.get(2).getAttributes(),
     Color.blue);
   GraphConstants.setOpaque(cells.get(2).getAttributes(), true);
   DefaultPort port2 = new DefaultPort();
   cells.get(2).add(port2);   // 加入一条边,将hello和world的两个port连接起来
   DefaultEdge edge = new DefaultEdge();
   edge.setSource(cells.get(0).getChildAt(0));
   edge.setTarget(cells.get(1).getChildAt(0));
   // 将edge加入cell集合类
   cells.add(edge);   // 同理
   DefaultEdge edge1 = new DefaultEdge();
   edge1.setSource(cells.get(0).getChildAt(0));
   edge1.setTarget(cells.get(2).getChildAt(0));
   // 将edge加入cell集合类
   cells.add(edge1);   // 同理
   DefaultEdge edge2 = new DefaultEdge();
   edge2.setSource(cells.get(2).getChildAt(0));
   edge2.setTarget(cells.get(1).getChildAt(0));
   // 将edge加入cell集合类
   cells.add(edge2);   // 为edge设置一个箭头
   int arrow = GraphConstants.ARROW_CLASSIC;
   GraphConstants.setLineEnd(edge.getAttributes(), arrow);
   GraphConstants.setEndFill(edge.getAttributes(), true);   // 将以上定义的cells对象加入graph对象
   Iterator it = cells.iterator();
   while (it.hasNext()) {
    graph.getGraphLayoutCache().insert(it.next());
   }   // 一些graph对象的简单调整
   // graph.setMoveable(false);//可否移动整个图形
   // graph.setDisconnectable(false);//不能移动边的指向,但是可以移动图形
   // graph.setDisconnectOnMove(false);//可否移动整个边,但是在边的源点终点改变后失效
   // { graph.setGridEnabled(true); graph.setGridVisible(true); } // 显示网格
   // graph.setMoveBelowZero(true); //是否允许cell越出左上角.通常设置为false,除非有特殊用处
   graph.setAntiAliased(true);// 圆滑图像线条
   // graph.setSelectionEnabled(false);//能否选择单个cell   
   /*
    * 加入改变边属性代码位置
    */
   JFrame frame = new JFrame();
   frame.getContentPane().add(new JScrollPane(graph));
   frame.pack();
   frame.setVisible(true);
}
}

⌨️ 快捷键说明

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