仓酷云

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

[学习教程] JAVA网页编程之用java小程序applet完成无穷级树布局

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

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

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

x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊程序该程序能够依据从指定的xml文件中读取的有关信息静态的创建一棵树。

1.该树的特性:

1)无穷级树布局

实际上树的深度能够无穷,树的深度由xml文件所给的信息断定;

数据加载接纳一次加载和静态加载相分离的办法;

每次翻开相干页时从头加载树布局,真实的做到了创建树的静态性。

2)复用性

因为这棵树是经由过程读取xml文件创建的,树的程序代码流动,以是具有很强的复用性。只必要给出xml文件,程序就能够创建对应的树。

3)与用户的交互

因为该程序是用java小程序完成的,以是能够使用java言语中监听事务的类,以呼应用户操纵。与用户具有更好的交互性。

2.程序布局

这棵树次要有三个类完成:

1)类TreeNode:该类起帮助感化,用来形貌树的数据布局,并供应一些setter,getter函数用来设置树布局的属性。

2)类IconRender:该类也是一个帮助类,用来设置树节点的图标。而且能够依据树节点的选中形态改动图标。

3)类AppletTree:该类是创建这棵树的次要类,它承继自Applet而且完成了TreeSelectionListener接口,以用来监听用户操纵。树布局由java类JTree显现,我们只必要公道的设定JTree的属性就能够机关出这棵树。而它的属性是经由过程jdom中的Element读取xml文件供应的。下面已提到监听用户操纵是经由过程完成TreeSelectionListener接口完成的,可是只监听不呼应毫无用途。如何才干将监听到的用户操纵传给响应的类以呼应用户的操纵呢?这里用的办法是经由过程URL将参数传送给jsp文件,再由jsp文件传给响应的操纵类完成的。

这三个类的代码以下:

1.TreeNode类

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;

}

}

2.IconRender类

importjavax.swing.*;

importjava.awt.*;

importjavax.swing.tree.*;

importjavax.swing.tree.DefaultTreeCellRenderer;

IconRender

classextendsDefaultTreeCellRenderer{





//创立用于显现的图标

publicstaticfinalImageIconleafSelectedIcon=newImageIcon("OpenedFolder.ico");

publicstaticfinalImageIconleafUnSelectedIcon=newImageIcon("closedFolder.ico");

publicstaticfinalImageIconfolderOpen=newImageIcon("OpenedFolder.ico");

publicstaticfinalImageIconfolderClose=newImageIcon("closedFolder.ico");



//设定图标随选中形态的变更

publicComponentgetTreeCellRendererComponent(JTree

tree,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();

if((leafSelectedIcon!=null)&&(leafUnSelectedIcon!=null))

System.out.println("IconRender:trace");



setLeafIcon(leafUnSelectedIcon);

setOpenIcon(folderOpen);

setClosedIcon(folderClose);



}



}

3.AppletTree类

importjavax.swing.event.*;

importjava.awt.*;

importjava.applet.*;

importjavax.swing.*;

importjavax.swing.tree.*;

importjava.awt.event.*;

importorg.jdom.*;

//importorg.w3c.dom.NodeList;

importorg.jdom.input.*;

importjava.io.*;

importjava.util.*;

importjava.net.*;



importjava.awt.*;

importjavax.swing.*;

importjavax.swing.border.*;

importjavax.swing.plaf.*;

importjavax.swing.plaf.basic.*;

importjavax.swing.plaf.metal.*;







importjava.io.*;

//importnetscape.javascript.*;

classMyWindowListenerextendsWindowAdapter

{

publicvoidwindowClosing(WindowEvente)

{

System.exit(1);

}

}



publicclassAppletTreeextendsAppletimplementsTreeSelectionListener

{

privateJTreetree;



privateTreePathpath;

privateJScrollPanetreeView;

privateDefaultMutableTreeNodetop;



privateDefaultMutableTreeNodeclicknode;







privateStringlink;



publicAppletTree(){

}

MouseListenerml=newMouseAdapter(){

publicvoidmousePressed(MouseEvente){

intselRow=tree.getRowForLocation(e.getX(),e.getY());

TreePathselPath=tree.getPathForLocation(e.getX(),e.getY());

if(selRow!=-1){

if(e.getClickCount()==1){

System.out.print("点击一次鼠标");



//失掉最初一个节点

DefaultMutableTreeNodetreeNode=(DefaultMutableTreeNode)selPath.getLastPathComponent();

booleanisLeaf=treeNode.isLeaf();



TreeNodeobjTreeNode=(TreeNode)treeNode.getUserObject();

System.out.println(isLeaf);

System.out.println(objTreeNode.getName());

System.out.println(objTreeNode.getId());

if(isLeaf)

{//假如为叶子节点就传进来举行查询操纵

try

{

getAppletContext().showDocument(newURL("http://127.0.0.1:8080/tree/showDevice.htm"),"f2");

}

catch(Exceptionex)

{

System.out.print(ex);

}

}



}

elseif(e.getClickCount()==2){

System.out.print("点击两次鼠标");

//getAppletContext().showDocument(newURL("http://www.csdn.net/"));

//myDoubleClick(selRow,selPath);

}

}

}

};





publicvoidstart()

{

super.start();

}



publicvoidinit(){

try{

super.init();

this.setLayout(newGridLayout(1,1));

tree=createTree(newFileInputStream("e:/example/TreeXML.xml"));

tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

tree.putClientProperty("JTree.lineStyle","Angled");



tree.setShowsRootHandles(true);

tree.setEditable(true);

tree.addTreeSelectionListener(this);

IconRenderrender=newIconRender();

tree.setCellRenderer(render);





treeView=newJScrollPane(tree);

//topPanel.add(tree);

this.add(treeView);



tree.addMouseListener(ml);



}catch(Exceptione){

e.printStackTrace();

}



}

publicJTreecreateTree(InputStreamis){

SAXBuilderbuilder=newSAXBuilder();

try{

Documentdoc=builder.build(is);

Elementroot=doc.getRootElement();

TreeNoderootNode=new

TreeNode(root.getAttributeValue("id"),root.getAttributeValue("name"),root.getAttributeValue("HaveChildren"));

top=newDefaultMutableTreeNode(rootNode);

addNode(root,top);

}catch(Exceptionex){

ex.printStackTrace();

}

//能够在这里改动jtree中连线的色彩

UIManager.put("Tree.hash",newColorUIResource(Color.red));

returnnewJTree(top);



}



/**

*

*@parame待到场树中的jdom元素

*@paramfatherNode树节点父亲节点

*/



privatevoidaddNode(Elemente,DefaultMutableTreeNodefatherNode){

try{

Iteratorit=e.getChildren().iterator();

if(!it.hasNext())

return;

while(it.hasNext()){



Elementsub=(Element)it.next();



Stringid=newString(sub.getAttributeValue("id").getBytes(),"GB2312");

Stringname=newString(sub.getAttributeValue("name").getBytes(),"GB2312");

Stringlink=newString(sub.getAttributeValue("HaveChildren").getBytes(),"GB2312");



System.out.println(id);

System.out.println(name);

System.out.println(link);



TreeNodetempNode=newTreeNode(id,name,link);



DefaultMutableTreeNodenode=newDefaultMutableTreeNode(tempNode);

fatherNode.add(node);



if(link.equals("true")){

System.out.println("true~!equaltest");

addNode(sub,node);

}

}

}

catch(Exceptionexp)

{

System.out.println("encodingfail");

}



}



/**

*依据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();

}

}

}





publicstaticvoidmain(String[]args){

JFrameframe1=newJFrame("test");

AppletTreetree=newAppletTree();

tree.init();

frame1.getContentPane().add(tree);

frame1.setSize(600,600);



frame1.show();

frame1.addWindowListener(newMyWindowListener());

}



}



还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
爱飞 该用户已被删除
沙发
发表于 2015-1-21 12:57:09 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
不帅 该用户已被删除
板凳
发表于 2015-1-29 06:14:45 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
蒙在股里 该用户已被删除
地板
发表于 2015-1-29 10:19:43 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
海妖 该用户已被删除
5#
发表于 2015-1-30 10:33:46 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
精灵巫婆 该用户已被删除
6#
发表于 2015-2-2 21:40:53 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
山那边是海 该用户已被删除
7#
发表于 2015-2-3 22:54:05 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
冷月葬花魂 该用户已被删除
8#
发表于 2015-2-4 08:53:55 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
飘灵儿 该用户已被删除
9#
发表于 2015-2-9 20:51:45 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
变相怪杰 该用户已被删除
10#
发表于 2015-2-18 15:51:52 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
小魔女 该用户已被删除
11#
发表于 2015-3-6 08:36:42 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
只想知道 该用户已被删除
12#
发表于 2015-3-7 00:40:01 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
分手快乐 该用户已被删除
13#
发表于 2015-3-8 02:37:25 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
活着的死人 该用户已被删除
14#
发表于 2015-3-15 19:53:06 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
admin 该用户已被删除
15#
发表于 2015-3-17 01:26:37 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
飘飘悠悠 该用户已被删除
16#
发表于 2015-3-18 22:34:08 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
再见西城 该用户已被删除
17#
发表于 2015-3-19 16:36:20 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
18#
发表于 2015-3-28 21:25:22 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
灵魂腐蚀 该用户已被删除
19#
发表于 2015-3-31 07:04:51 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
透明 该用户已被删除
20#
发表于 2015-4-6 21:08:52 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 01:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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