DefaultMutableTreeNode rootNode=new DefaultMutableTreeNode("根");for(int i=1;i<10000+1;i++){
DefaultMutableTreeNode childNode1=new DefaultMutableTreeNode(i);
rootNode.add(childNode1);}
JTree jTree1 = new JTree(rootNode);
本人通过上述方法制作一个Applet在网页中生成tree,但是在生成80w个子节点的时候系统内存已经不够,特此,寻求一种通用的,可重用的,易集成的,运行效率最高的方法,也可以用js生成tree。希望大家能提供更多方法,一起讨论,谢谢!
DefaultMutableTreeNode childNode1=new DefaultMutableTreeNode(i);
rootNode.add(childNode1);}
JTree jTree1 = new JTree(rootNode);
本人通过上述方法制作一个Applet在网页中生成tree,但是在生成80w个子节点的时候系统内存已经不够,特此,寻求一种通用的,可重用的,易集成的,运行效率最高的方法,也可以用js生成tree。希望大家能提供更多方法,一起讨论,谢谢!
解决方案 »
- Eclipse工具使用问题
- 遍历JAR文件夹下的class文件
- Erroe:no 'server' JVM at 'F:\jre1.5.0\bin\server\jvm.dll
- 如何在Java的JFrame里面嵌入fireFox?
- 用jTexaArea显示中文时出现的问题,困惑中!!!
- javax.swing中JFrame,JDialog,JWindow,JApplet之间的层次关系是什么
- 我要怎么样学习JAVA
- 内存漏洞小问!
- 请问我做的java的软件如何做成演示版,用什么软件?就是把我的操作录下来,给别人看
- 新手问题!关于swing.Timer!
- Scanner类问题
- JComboBox第一次选取时为什么没有响应itemStateChanged事件。
对一些未知层次数的树形结构,如文件结构,数据库里面的递归等,
可考虑逐层动态加载子节点,从DefaultMutableTreeNode继承,主要改写几个方法即可
getChildAt(int index)
int getChildCount()
boolean isLeaf()
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
<!--
#foldheader{cursor:hand ; font-weight:bold ;
list-style-image:url(fold.gif)}
#foldinglist{list-style-image:url(list.gif)}
//-->
</style>
<script language="JavaScript1.2">
<!--var head="display:''"
img1=new Image()
img1.src="fold.gif"
img2=new Image()
img2.src="open.gif"function change(){
if(!document.all)
return
if (event.srcElement.id=="foldheader") {
var srcIndex = event.srcElement.sourceIndex
var nested = document.all[srcIndex+1]
if (nested.style.display=="none") {
nested.style.display=''
event.srcElement.style.listStyleImage="url(open.gif)"
}
else {
nested.style.display="none"
event.srcElement.style.listStyleImage="url(fold.gif)"
}
}
}document.onclick=change//-->
</script>
</HEAD><BODY>
<ul>
<li id="foldheader">News</li>
<ul id="foldinglist" style="display:none">
<li><a href="../../../www.cnn.com/index.html">CNN</a></li>
<li><a href="../../../www.abcnews.com/index.html">ABC News</a></li>
<li><a href="../../../www.vancouversun.com/index.html">Vancouver Sun</a></li>
</ul> <li id="foldheader">Games</li>
<ul id="foldinglist" style="display:none">
<li><a href="../../../www.gamespot.com/index.html">GameSpot</a></li>
<li><a href="../../../www.happypuppy.com/index.html">Happy Puppy</a></li>
<li><a href="../../../www.gamecenter.com/index.html">Game Center</a></li>
</ul> <li id="foldheader">Software</li>
<ul id="foldinglist" style="display:none">
<li><a href="../../../www.download.com/index.html">outer 1</a></li>
<li><a href="../../../www.hotfiles.com/index.html">outer 2</a></li>
<li id="foldheader">Nested</li>
<ul id="foldinglist" style="display:none">
<li><a href="../../../www.windows95.com/index.html">nested 1</a></li>
<li><a href="../../../www.shareware.com/index.html">nested 2</a></li>
</ul>
<li><a href="../../../www.windows95.com/index.html">outer 3</a></li>
<li><a href="../../../www.shareware.com/index.html">outer 4</a></li>
</ul>
</ul><script language="JavaScript1.2">
<!--
/**
* Get cookie routine by Shelley Powers
* ([email protected])
*/
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
// if cookie exists
if (offset != -1) {
offset += search.length
// set index of beginning of value
end = document.cookie.indexOf(";", offset);
// set index of end of cookie value
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}if (get_cookie(window.location.pathname) != ''){
var openresults=get_cookie(window.location.pathname).split(" ")
for (i=0 ; i < openresults.length ; i++){
foldinglist[openresults[i]].style.display=''
document.all[foldinglist[openresults[i]].sourceIndex -
1].style.listStyleImage="url(open.gif)"
}
}if (document.all){
var nodelength=foldinglist.length-1
var nodes=new Array(nodelength)
var openones=''
}function check(){
for (i=0 ; i <= nodelength ; i++){
if (foldinglist[i].style.display=='')
openones=openones + " " + i
}
document.cookie=window.location.pathname+"="+openones
}if (document.all)
document.body.onunload=check
//-->
</script></BODY>
</HTML>
function ltrim(str){
var i=str.length;
temp=str; for(j=0;j<i;j++)
if(temp.charAt(j)!=' '){
temp=temp.substring(j,i);
break;
}
if(j==i){
return "";
}
return temp;
}function rtrim(str){
var i=str.length;
temp=str; for(j=i;j>0;j--)
if(temp.charAt(j)!=' '){
temp=temp.substring(0,j);
break;
}
if(j==0){
return "";
} return temp;
}function trim(str){
return ltrim(rtrim(str));
}function showBranch(branch){
var objBranch = document.getElementById(branch).style;
if (objBranch.display=="none")
objBranch.display="block";
else
objBranch.display="none";
swapFolder("I" + branch);
}function swapFolder(img){objImg = document.getElementById(img);if (objImg.src.indexOf("open.bmp")>-1){objImg.src = "closed.bmp";
}
else{objImg.src = "open.bmp";
}
}function leaf(text,cls){
this.text = text;
this.write = writeLeaf;
this.cls=cls;
}
function writeLeaf(){
var blankword="" ;
var n = this.cls;
for(var i=0;i<n;i++){
blankword=blankword + " ";
}
var leafString =blankword + " " + this.text + "<br>";
return leafString;
}function branch(id, text,link,cls){
this.id = id;
this.text = text;
this.link = link;
this.cls=cls;
this.write = writeBranch;
this.add = addLeaf;
this.leaves = new Array();
}function addLeaf(leaf){
this.leaves[this.leaves.length] = leaf;}function writeBranch(){
var branchString ;
var blankword="" ;
var n = this.cls; for(var i=0;i<n;i++){
blankword=blankword + " ";
} if(this.link!=null&&trim(this.link)!=""&&trim(this.link)!="undefined"){//鏈夎繛鎺?
branchString ="<span class=\"branch\"" + "> ";
branchString = branchString + blankword + "<img id=\"I"+this.id+"\" src=\"open.bmp\"" + " onclick=\"showBranch(\'" + this.id + "\')\""+">"; branchString =branchString +"<a href=\""+this.link+"\">"+this.text +"</a> </span><br>";
}else{//娌℃湁杩炴帴
branchString ="<span class=\"branch\"" + " onclick=\"showBranch(\'" + this.id + "\')\""+ "> ";
branchString = branchString + blankword + "<img id=\"I"+this.id+"\" src=\"open.bmp\"" +">"; branchString =branchString +"<font color=\"#3366cc\">" + this.text + "</font>" + " </span><br>";
}
//alert(branchString);
branchString += "<span class=\"leaf\" id=\"";
branchString += this.id + "\">";
var numLeaves = this.leaves.length;
for (var j=0;j< numLeaves;j++) branchString += this.leaves[j].write();
branchString += "</span>";
//alert(branchString);
return branchString;
}function tree(){
this.branches = new Array();
this.add = addBranch;
this.write = writeTree;
}
function addBranch(branch){
this.branches[this.branches.length] = branch;
}function writeTree(){
var treeString = "";
var numBranches = this.branches.length;for (var i=0;i<numBranches;i++)
treeString += this.branches[i].write();document.write(treeString);}
tree.html文件内容
<html>
<head>
<script language="javascript" src="tree.js">
</script></head>
<body>
<script language="javascript">var b1=new branch(1,"b1","",0);
var b2=new branch(2,"b2","",0);
var b3=new branch(3,"b3","",0);
var b4=new branch(4,"b4","",0);
var b5=new branch(5,"b5","",1);
var b6=new branch(6,"b6","",1);
var b7=new branch(7,"b7","",1);
b1.add(b5);
b2.add(b6);
b3.add(b7);
var tr1=new tree();
tr1.add(b1);
tr1.add(b2);
tr1.add(b3);
tr1.add(b4);tr1.write();</script>
</body>
</html>
两个文件放在同一目录,打开tree.html文件就可看到效果,有需要改动的自己看着办,要懂javascript的哦,不然寸步难行
CSDN都用这个
如果你需要可以直接和我要 我用的一个配置表把它重新配置起来了[email protected]
http://www.destroydrop.com/javascripts/tree/
他只要你传个数据集过去就行了