`
justhavealittlefaith
  • 浏览: 8986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于项目中用到jgraph和applet的一点总结(2)

阅读更多

承接上篇!!!

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代码,本人感觉这种方法繁琐且有限制。可以用servletapplet之间的通信解决所有问题。

 

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-->

0
0
分享到:
评论
1 楼 jiang_xiaohan 2012-09-25  
这个第二篇。。。有源码吗,,,,,

相关推荐

    关于项目中用到jgraph和applet的一点总结(1)

    结合标签“源码”和“工具”,我们可以推断这篇博客可能涉及到如何在项目中集成和使用`jGraph`库,以及如何创建和部署`Applet`。可能包含的内容有: 1. `jGraph`的基本使用:介绍如何导入`jGraph`库,创建基本的...

    JGraph

    在集成JGraph到项目时,需要考虑项目的结构和构建选项。通常情况下,将JGraph库添加到项目的类路径(Classpath)中即可使用。 #### 六、JGraph的设计理念 JGraph的设计充分考虑了灵活性和扩展性,这使得它不仅能作为...

    jgraph源码+例子

    7. **集成到其他Java应用**:由于JGraph是基于Java的,它可以无缝集成到任何Java应用程序中,包括Swing和JavaFX等桌面应用,甚至可以在Web应用中通过Java Applet或Java Web Start技术使用。 8. **社区支持**:...

    JGraph 手册+The JGraph Tutorial

    1. **安装与设置**:介绍如何将JGraph库添加到Java项目中,以及相关的依赖管理和构建工具配置。 2. **基本图形元素**:详细讲解了JGraph中的节点(Vertices)和边(Edges),包括它们的创建、属性设置和可视化定制...

    jgraph

    在iteye博客中,作者liujianeye分享了关于如何利用jgraph进行图形绘制和交互实现的一些实践经验和技巧。 **知识点详解:** 1. **jgraph库介绍:** jgraph是开源的JavaScript库,主要用于创建复杂的图形用户界面,...

    JGraph document

    3. **实战案例**:通过实际项目,如流程图编辑器或网络拓扑展示,深入理解和运用JGraph的各个功能。 4. **最佳实践**:掌握性能优化技巧,如批处理操作、缓存策略等,确保在大型数据集下的高效运行。 5. **API参考...

    jgraph官方手册

    - **项目结构与构建选项**:jgraph项目通常包含几个关键文件夹和配置文件,用于管理源代码和构建过程。 - **1.6 设计理念** - **模块化设计**:jgraph采用了高度模块化的设计思路,便于用户根据实际需求定制功能...

    JGraph小列子加jar包

    在使用JGraph时,你需要将JGraph的jar包(如`mxgraph.jar`)添加到你的项目类路径中,以便能够访问其类和方法。这可以通过IDE的设置或者在构建脚本中指定。 4. **源码学习:** 查看源码是深入理解JGraph工作原理的...

    jgraph源代码

    源代码的形式使得开发者可以直接编译和理解其内部工作原理,从而更好地整合到自己的项目中。 总的来说,JGraph是一个强大的工具,适用于需要图形化展示数据或者创建交互式图形界面的Java应用。通过其开源的特性,...

    JGraph的开始

    JGraph以其灵活性、易用性和高度可定制性而受到开发者的欢迎。 在开始使用JGraph之前,了解其基本概念和组件至关重要。JGraph的核心是`GraphModel`,它是图形数据结构的存储和管理中心,包含了节点(Vertices)和边...

    jgraph的jar包 zip 源代码

    - **导入JGraph库**:将下载的jar包加入到项目类路径中,确保能够访问到JGraph的相关类。 - **创建图形模型**:通过`GraphModel`接口实例化一个模型,它是图表数据结构的基础。 - **构建图形视图**:使用`JGraph`类...

    JGraph文档和demo

    综上所述,JGraph不仅是一个功能强大的图形编辑器组件,还是一个具有良好社区支持和丰富文档资源的开源项目。对于希望在其Java应用程序中集成图形编辑功能的开发者来说,JGraph是一个值得考虑的选择。

    jgraph官方文档

    - **6.3 项目结构**:文档还提到了jgraph项目的典型结构,包括依赖管理和构建选项等细节,这对于构建大型项目尤为重要。 - **6.4 设计模式**:jgraph内部采用了一些设计模式来提高代码的可维护性和扩展性,这些模式...

    JGRAPH开发jar

    1. **集成到项目**: 将JGRAPH的jar文件引入到Java项目中,通常通过Maven或Gradle等构建工具进行依赖管理。 2. **创建图形**: 使用`Graph`类初始化一个图形对象,然后添加节点和边。节点和边可以通过`Vertex`和`Edge...

    Swing 实现 JGraph

    - **全Swing兼容性**:确保JGraph可以无缝集成到任何基于Swing的应用程序中。 - **清晰高效的设计**:设计简洁明了,同时保证高效的性能表现。 - **短下载时间**:通过优化代码结构,减少应用程序启动所需的加载时间...

    Jgraph中文讲义

    2. **图表互动**:用户可以通过鼠标和键盘与图表进行交互,如拖动、缩放、选择和编辑元素。 3. **图表布局**:内置多种布局算法,如树形布局、圆形布局等,自动调整图形节点的位置,使图表更加清晰。 4. **图形分析*...

    jgraph-draw.io

    2. **库文件**:jGraph库的JavaScript文件,这些文件提供了绘制和操作图形所需的功能。 3. **示例**:可能包含了一些示例流程图,供用户参考和学习。 4. **资源文件**:图标、图片和其他视觉元素,用于构建流程图的...

    JGraph中文资料

    JGraph 是一款强大的图形库,主要用于创建流程图和其他类型的图形可视化应用。它为开发者提供了丰富的功能,包括图形的创建、编辑、布局以及交互性。在本文中,我们将深入探讨 JGraph 的核心概念、使用方法以及如何...

    JGraph代码,适合初学者

    jgraph画图实现代码,适合初学者,很多功能jgraph画图实现代码,适合初学者,很多功能jgraph画图实现代码,适合初学者,很多功能jgraph画图实现代码,适合初学者,很多功能jgraph画图实现代码,适合初学者,很多功能...

    JGraph组件下载 JGraph.jar组件下载

    JGraph组件下载 JGraph.jar组件下载 javabean组件下载 图像绘制javabean

Global site tag (gtag.js) - Google Analytics