承接上篇!!!
private void addEdge(NodeBean source, NodeBean target, int weight,
String edgeString) {
if (source == null || target == null) {
return;
}
if (gefNodeMap == null) {
gefNodeMap = new HashMap();
}
if (graphNodeMap == null) {
graphNodeMap = new HashMap();
}
if (edgeList == null) {
edgeList = new ArrayList();
}
if (directedGraph == null) {
directedGraph = new DirectedGraph();
}
addEdgeGef(source, target, weight, edgeString);
DefaultGraphCell sourceNode = null;
DefaultGraphCell targetNode = null;
sourceNode = (DefaultGraphCell) graphNodeMap.get(source);
if (sourceNode == null) {
sourceNode = new DefaultGraphCell(source);
sourceNode.addPort();
graphNodeMap.put(source, sourceNode);
}
targetNode = (DefaultGraphCell) graphNodeMap.get(target);
if (targetNode == null) {
targetNode = new DefaultGraphCell(target);
targetNode.addPort();
graphNodeMap.put(target, targetNode);
}
DefaultEdge edge = new DefaultEdge(edgeString);
UnionEdge unionEdge = new UnionEdge();
unionEdge.setEdge(edge);
unionEdge.setSourceNode(sourceNode);
unionEdge.setTargetNode(targetNode);
edgeList.add(unionEdge);
}
private void addEdgeGef(NodeBean source, NodeBean target, int weight,
String edgeString) {
if (source.equals(target)) {
return;
}
Node gefSourceNode = null;
Node gefTargetNode = null;
gefSourceNode = (Node) gefNodeMap.get(source);
if (gefSourceNode == null) {
gefSourceNode = new Node();
gefSourceNode.width = GraphProp.NODE_WIDTH;
gefSourceNode.height = GraphProp.NODE_WIDTH;
directedGraph.nodes.add(gefSourceNode);
gefNodeMap.put(source, gefSourceNode);
}
gefTargetNode = (Node) gefNodeMap.get(target);
if (gefTargetNode == null) {
gefTargetNode = new Node();
gefTargetNode.width = GraphProp.NODE_WIDTH;
gefTargetNode.height = GraphProp.NODE_WIDTH;
directedGraph.nodes.add(gefTargetNode);
gefNodeMap.put(target, gefTargetNode);
}
Edge gefEdge1 = null;
try {
gefEdge1 = new Edge(gefSourceNode, gefTargetNode);
gefEdge1.weight = weight;
directedGraph.edges.add(gefEdge1);
} catch (Exception e) {
e.printStackTrace();
}
}
public List send(String hh, String khdm, NodeBean nb) {
ObjectInputStream in = null;
try {
URL url = null;
if(nb != null && hh == null && khdm == null){
url = new URL(getCodeBase(), "Riceive?type=" + nb.getType() + "&code=" + nb.getKhdm());
}else{
url = new URL(getCodeBase(), "Riceive?hh=" + hh + "&khdm=" + khdm);
}
connect = url.openConnection();
showStatus("Open Connection!");
connect.connect();
showStatus("Open Sream!");
in = new ObjectInputStream(connect.getInputStream());
showStatus("reading");
List list = (List) in.readObject();
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public String send2(String hh, String khdm, NodeBean nb) {
ObjectInputStream in = null;
try {
URL url = null;
if(nb != null && hh == null && khdm == null){
url = new URL(getCodeBase(), "Riceive?type=" + nb.getType() + "&code=" + nb.getKhdm());
}else{
url = new URL(getCodeBase(), "Riceive?hh=" + hh + "&khdm=" + khdm);
}
connect = url.openConnection();
showStatus("Open Connection!");
connect.connect();
showStatus("Open Sream!");
in = new ObjectInputStream(connect.getInputStream());
showStatus("reading");
String res = in.readObject().toString();
return res;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void labelIntroduce(GraphModel model, Map attributes){
}
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
DefaultGraphCell node = (DefaultGraphCell) graph.getSelectionCellAt(new Point2D.Double(x, y));
NodeBean userObject = (NodeBean)node.getUserObject();
if(userObject.getType().equals("4")){
this.paintGraph(tempList);
}else{
String res = this.send2(null, null, userObject);
JSObject win=JSObject.getWindow(this);
win.call("setText", new Object[]{res});
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
3. Jgraph图结合applet显示在网页
当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器。
在页面上部署applet:
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase="jre-6u4-windows-i586-p.exe"
width="550" height="450">
<param name="CODE" value="test.TestGraph.class">
<param name="CODEBASE" value=".">
<param name="hh" value="<%=hh%>">
<param name="khdm" value="<%=khdm%>">
Could not find a plugin supported by your browser.
Please waiting for download Sun's Java JRE 1.6.0
</object>
使用object是为了解决用户浏览器没有jre环境时自动下载jre。
4. 关于applet访问数据库得到数据动态显示jgraph图到网页
有一种方法是直接在applet类里的init方法里写纯jdbc代码,本人感觉这种方法繁琐且有限制。可以用servlet与applet之间的通信解决所有问题。
Applet代码:
URL url = null;
if(nb != null && hh == null && khdm == null){
url = new URL(getCodeBase(), "Riceive?type=" + nb.getType() + "&code=" + nb.getKhdm());
}else{
url = new URL(getCodeBase(), "Riceive?hh=" + hh + "&khdm=" + khdm);
}
connect = url.openConnection();
showStatus("Open Connection!");
connect.connect();
showStatus("Open Sream!");
in = new ObjectInputStream(connect.getInputStream());
showStatus("reading");
List list = (List) in.readObject();
Servlet代码:
WebApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(req.getSession().getServletContext());
JgraphUtil ju = (JgraphUtil)appContext.getBean("JgraphUtil");
ObjectOutputStream out = new ObjectOutputStream( res.getOutputStream() );
if(hh!=null && khdm!=null ){
List list = ju.jgraph(hh, khdm);
out.writeObject(list);
out.flush();
out.close();
}
5. 关于响应鼠标事件后动态显示网页
将jgraph图显示到网页,点击某个图形节点时,能在图形的外面网页上显示相应的详细信息,这个时候需要用到JSObject这个类。这个类一般都已安装的jre里的lib文件夹的plugin.jar里,将这个jar包导入即可。
代码示例:
JSObject win=JSObject.getWindow(this);
win.call("setText", new Object[]{res});//调用JavaScript自定义方法
<!--EndFragment-->
分享到:
相关推荐
结合标签“源码”和“工具”,我们可以推断这篇博客可能涉及到如何在项目中集成和使用`jGraph`库,以及如何创建和部署`Applet`。可能包含的内容有: 1. `jGraph`的基本使用:介绍如何导入`jGraph`库,创建基本的...
在集成JGraph到项目时,需要考虑项目的结构和构建选项。通常情况下,将JGraph库添加到项目的类路径(Classpath)中即可使用。 #### 六、JGraph的设计理念 JGraph的设计充分考虑了灵活性和扩展性,这使得它不仅能作为...
7. **集成到其他Java应用**:由于JGraph是基于Java的,它可以无缝集成到任何Java应用程序中,包括Swing和JavaFX等桌面应用,甚至可以在Web应用中通过Java Applet或Java Web Start技术使用。 8. **社区支持**:...
1. **安装与设置**:介绍如何将JGraph库添加到Java项目中,以及相关的依赖管理和构建工具配置。 2. **基本图形元素**:详细讲解了JGraph中的节点(Vertices)和边(Edges),包括它们的创建、属性设置和可视化定制...
在iteye博客中,作者liujianeye分享了关于如何利用jgraph进行图形绘制和交互实现的一些实践经验和技巧。 **知识点详解:** 1. **jgraph库介绍:** jgraph是开源的JavaScript库,主要用于创建复杂的图形用户界面,...
3. **实战案例**:通过实际项目,如流程图编辑器或网络拓扑展示,深入理解和运用JGraph的各个功能。 4. **最佳实践**:掌握性能优化技巧,如批处理操作、缓存策略等,确保在大型数据集下的高效运行。 5. **API参考...
- **项目结构与构建选项**:jgraph项目通常包含几个关键文件夹和配置文件,用于管理源代码和构建过程。 - **1.6 设计理念** - **模块化设计**:jgraph采用了高度模块化的设计思路,便于用户根据实际需求定制功能...
在使用JGraph时,你需要将JGraph的jar包(如`mxgraph.jar`)添加到你的项目类路径中,以便能够访问其类和方法。这可以通过IDE的设置或者在构建脚本中指定。 4. **源码学习:** 查看源码是深入理解JGraph工作原理的...
源代码的形式使得开发者可以直接编译和理解其内部工作原理,从而更好地整合到自己的项目中。 总的来说,JGraph是一个强大的工具,适用于需要图形化展示数据或者创建交互式图形界面的Java应用。通过其开源的特性,...
JGraph以其灵活性、易用性和高度可定制性而受到开发者的欢迎。 在开始使用JGraph之前,了解其基本概念和组件至关重要。JGraph的核心是`GraphModel`,它是图形数据结构的存储和管理中心,包含了节点(Vertices)和边...
- **导入JGraph库**:将下载的jar包加入到项目类路径中,确保能够访问到JGraph的相关类。 - **创建图形模型**:通过`GraphModel`接口实例化一个模型,它是图表数据结构的基础。 - **构建图形视图**:使用`JGraph`类...
综上所述,JGraph不仅是一个功能强大的图形编辑器组件,还是一个具有良好社区支持和丰富文档资源的开源项目。对于希望在其Java应用程序中集成图形编辑功能的开发者来说,JGraph是一个值得考虑的选择。
- **6.3 项目结构**:文档还提到了jgraph项目的典型结构,包括依赖管理和构建选项等细节,这对于构建大型项目尤为重要。 - **6.4 设计模式**:jgraph内部采用了一些设计模式来提高代码的可维护性和扩展性,这些模式...
1. **集成到项目**: 将JGRAPH的jar文件引入到Java项目中,通常通过Maven或Gradle等构建工具进行依赖管理。 2. **创建图形**: 使用`Graph`类初始化一个图形对象,然后添加节点和边。节点和边可以通过`Vertex`和`Edge...
- **全Swing兼容性**:确保JGraph可以无缝集成到任何基于Swing的应用程序中。 - **清晰高效的设计**:设计简洁明了,同时保证高效的性能表现。 - **短下载时间**:通过优化代码结构,减少应用程序启动所需的加载时间...
2. **图表互动**:用户可以通过鼠标和键盘与图表进行交互,如拖动、缩放、选择和编辑元素。 3. **图表布局**:内置多种布局算法,如树形布局、圆形布局等,自动调整图形节点的位置,使图表更加清晰。 4. **图形分析*...
2. **库文件**:jGraph库的JavaScript文件,这些文件提供了绘制和操作图形所需的功能。 3. **示例**:可能包含了一些示例流程图,供用户参考和学习。 4. **资源文件**:图标、图片和其他视觉元素,用于构建流程图的...
JGraph 是一款强大的图形库,主要用于创建流程图和其他类型的图形可视化应用。它为开发者提供了丰富的功能,包括图形的创建、编辑、布局以及交互性。在本文中,我们将深入探讨 JGraph 的核心概念、使用方法以及如何...
jgraph画图实现代码,适合初学者,很多功能jgraph画图实现代码,适合初学者,很多功能jgraph画图实现代码,适合初学者,很多功能jgraph画图实现代码,适合初学者,很多功能jgraph画图实现代码,适合初学者,很多功能...
JGraph组件下载 JGraph.jar组件下载 javabean组件下载 图像绘制javabean