仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1539|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网页设计利用jdom操纵xml数据,天生含Jtree的ap...

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:48:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践!dom|xml|数据
转自:http://www.softhouse.com.cn/html/200410/2004102517145700001335.html

利用jdom操纵xml数据,天生含Jtree的applet
在我们事情中,经常会碰着树形组件的天生成绩,假如你在开辟webapplication,地道利用javascript来天生树形组件长短常烦琐的,并且交互性也不不太好。以是很多产物使applet来完成树形组件的功效。好比说,weblogic,jboss等产物的console.以是,把树形数据构造成xml文件,用jdom分析它,最初天生applet就十分有通用的意义。上面,我就给出一个例子,举一反三。1.筹办一个存有属性数据的xml文件,把它放在classpath中,我这里是org.xml。[pre]<?xmlversion="1.0"encoding="UTF-8"?><!--SampleXMLfilegeneratedbyXMLSPYv5rel.3U(http://www.xmlspy.com)--><nodexmlns="http://www.javabox.com/schemas/org"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.javabox.com/schemas/orgE:myDemoorg.xsd"name="构造机构"id="-1"desc=""link="#"><nodename="总司理"id="1"desc=""link="#"><nodename="办理副总司理"id="2"desc=""link="#"/><nodename="临盆副总司理"id="3"desc=""link="#"><nodename="项目部"id="7"desc=""link="#"/><nodename="机器公司"id="8"desc=""link="#"/><nodename="贝盟公司"id="9"desc=""link="#"/><nodename="洛斯韦公司"id="9"desc=""link="#"/></node><nodename="总工程师"id="4"desc=""link="#"/><nodename="总管帐师"id="5"desc=""link="#"/><nodename="总经济师"id="6"desc=""link="#"/></node></node>[/pre]2.确保你可使用jdom剖析器,你假如没有能够往这里下载。3.用于代表树结点节点的javabean,TreeNode.javapackagecom.javabox.jtree;publicclassTreeNode{privateStringid;privateStringname;privateStringlink;publicTreeNode(Stringid,Stringname,Stringlink){this.id=id;this.name=name;this.link=link;}publicStringgetId(){returnid;}publicvoidsetId(StringId){this.id=Id;}publicvoidsetName(StringName){this.name=Name;}publicStringgetName(){returnname;}publicStringtoString(){returnname;}publicStringgetLink(){returnlink;}publicvoidsetLink(Stringlink){this.link=link;}}4.本人写的TreeCellRenderer,IconRender.javapackagecom.javabox.jtree;importjavax.swing.*;importjava.awt.*;importjavax.swing.tree.*;importjavax.swing.tree.DefaultTreeCellRenderer;classIconRenderextendsDefaultTreeCellRenderer{//你必要交换成你的iconpublicstaticfinalIconleafSelectedIcon=newImageIcon("greeball.JPG");publicstaticfinalIconleafUnSelectedIcon=newImageIcon("greyball.JPG");publicstaticfinalIconfolderOpen=newImageIcon("folderopen.JPG");publicstaticfinalIconfolderClose=newImageIcon("folderclose.JPG");publicComponentgetTreeCellRendererComponent(JTreetree,Objectvalue,booleanselected,booleanexpanded,booleanleaf,introw,booleanhasFocus){super.getTreeCellRendererComponent(tree,value,selected,expanded,leaf,row,hasFocus);if(leaf&&selected){setIcon(IconRender.leafSelectedIcon);}elseif(leaf){setIcon(IconRender.leafUnSelectedIcon);}returnthis;}publicIconRender(){super();this.setLeafIcon(leafUnSelectedIcon);this.setOpenIcon(folderOpen);this.setClosedIcon(folderClose);}}5.AppletTree.java,该文件剖析xml文件,天生含Jtree的applet,你能够把它嵌进到jsp,html文件中利用,也能够间接运转该文件。packagecom.javabox.jtree;importjavax.swing.event.*;importjava.awt.*;importjava.applet.*;importjavax.swing.*;importjavax.swing.tree.*;importjava.awt.event.*;importorg.jdom.*;importorg.jdom.input.*;importjava.io.*;importjava.util.*;importjava.awt.*;importjavax.swing.*;importjavax.swing.border.*;importjavax.swing.plaf.*;importjavax.swing.plaf.basic.*;importjavax.swing.plaf.metal.*;importjava.io.*;importnetscape.javascript.*;publicclassAppletTreeextendsAppletimplementsTreeSelectionListener{privateJTreetree;privateTreePathpath;privatePaneltopPanel;privateDefaultMutableTreeNodetop;privateDefaultMutableTreeNodeclicknode;privateStringlink;publicAppletTree(){}publicvoidinit(){try{super.init();this.setLayout(newGridLayout(1,1));tree=createTree(newFileInputStream("org.xml"));tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);tree.putClientProperty("JTree.lineStyle","Angled");tree.setShowsRootHandles(true);tree.setEditable(false);tree.addTreeSelectionListener(this);IconRenderrender=newIconRender();tree.setCellRenderer(render);topPanel=newPanel(newBorderLayout());topPanel.add(tree);this.add(topPanel);}catch(Exceptione){e.printStackTrace();}}publicJTreecreateTree(InputStreamis){SAXBuilderbuilder=newSAXBuilder();try{Documentdoc=builder.build(is);Elementroot=doc.getRootElement();TreeNoderootNode=newTreeNode(root.getAttributeValue("id"),root.getAttributeValue("name"),root.getAttributeValue("link"));top=newDefaultMutableTreeNode(rootNode);addNode(root,top);}catch(Exceptionex){ex.printStackTrace();}//你能够在这里改动jtree中连线的色彩,我就教外洋的妙手才找到的,很酷的哦:)UIManager.put("Tree.hash",newColorUIResource(Color.red));returnnewJTree(top);}/****@parame待到场树种的jdom元素*@paramrootNode树根节点*/privatevoidaddNode(Elemente,DefaultMutableTreeNoderootNode){Stringid=e.getAttributeValue("id");Stringname=e.getAttributeValue("name");Stringlink=e.getAttributeValue("link");TreeNodenode=newTreeNode(id,name,link);//若有父节点Elementfather=e.getParent();if(father!=null){Stringfid=father.getAttributeValue("id");DefaultMutableTreeNodefatherNode=getTreeNode(fid,rootNode);if(fatherNode!=null){fatherNode.add(newDefaultMutableTreeNode(node));}}//若有子节点Iteratorit=e.getChildren().iterator();while(it.hasNext()){Elementchild=(Element)it.next();addNode(child,rootNode);}}/***依据id,查找树节点,//广度优先*@paramid节点id*@paramrootNode树根节点*@returnDefaultMutableTreeNode*/privateDefaultMutableTreeNodegetTreeNode(Stringid,DefaultMutableTreeNoderootNode){DefaultMutableTreeNodereturnNode=null;if(rootNode!=null){Enumerationenum=rootNode.breadthFirstEnumeration();while(enum.hasMoreElements()){DefaultMutableTreeNodetemp=(DefaultMutableTreeNode)enum.nextElement();TreeNodenode=(TreeNode)temp.getUserObject();if(node.getId().equals(id)){returnNode=temp;break;}}}returnreturnNode;}publicvoidvalueChanged(TreeSelectionEventevent){if(event.getSource()==tree){path=event.getPath();clicknode=(DefaultMutableTreeNode)path.getLastPathComponent();Objectuo=clicknode.getUserObject();if(uoinstanceofTreeNode){TreeNodend=(TreeNode)clicknode.getUserObject();link=nd.getLink();}//挪用一个javascript函数; //JSObject.getWindow(this).eval("javascript:window.open("+link+")");}}publicstaticvoidmain(String[]args){JFrameframe=newJFrame("test");AppletTreetree=newAppletTree();tree.init();frame.getContentPane().add(tree);frame.setSize(600,600);frame.show();}}6.运转一个这个类,是否是很cool哦,你还能够把它嵌在网页中,挪用javasript函数,到达革新页面的目标。
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。
海妖 该用户已被删除
沙发
发表于 2015-1-21 07:48:04 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-24 12:05:47 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
再现理想 该用户已被删除
地板
发表于 2015-1-24 15:45:30 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
乐观 该用户已被删除
5#
发表于 2015-1-31 15:51:03 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
谁可相欹 该用户已被删除
6#
发表于 2015-2-2 15:32:18 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
精灵巫婆 该用户已被删除
7#
发表于 2015-2-5 19:44:51 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
小女巫 该用户已被删除
8#
发表于 2015-2-7 05:43:15 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
透明 该用户已被删除
9#
发表于 2015-2-11 15:56:57 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
因胸联盟 该用户已被删除
10#
发表于 2015-2-12 09:34:16 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
分手快乐 该用户已被删除
11#
发表于 2015-3-2 15:33:48 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
admin 该用户已被删除
12#
发表于 2015-3-11 04:17:20 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
小魔女 该用户已被删除
13#
发表于 2015-3-11 22:25:01 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
深爱那片海 该用户已被删除
14#
发表于 2015-3-19 15:07:56 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
飘灵儿 该用户已被删除
15#
发表于 2015-3-20 12:41:12 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
再见西城 该用户已被删除
16#
发表于 2015-3-31 08:54:10 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
蒙在股里 该用户已被删除
17#
发表于 2015-4-9 00:34:01 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
飘飘悠悠 该用户已被删除
18#
 楼主| 发表于 2015-4-16 01:09:01 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
只想知道 该用户已被删除
19#
发表于 2015-4-16 07:50:39 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
兰色精灵 该用户已被删除
20#
发表于 2015-4-17 00:29:06 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 07:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表