📄 hello.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 + -