import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.applet.*;
/**
* <p>title: applet中使用swing</p>
* <p>description: 使用swing的japplet实现树功能。</p>
* <p>copyright: copyright (c) 2003</p>
* <p>filename: pagetree.java</p>
* @version 1.0
*/
public class pagetree extends japplet implements treeselectionlistener {
defaultmutabletreenode[] nodeat = new defaultmutabletreenode[256];
string target = null;
hashtable links = new hashtable();
appletcontext context;
public void init() {
//获取applet的内容
context = getappletcontext();
//定义根节点
defaultmutabletreenode root = null;
getcontentpane().setlayout(new borderlayout());
//获取参数。定义的数据配置文件。
string s = getparameter("file");
if (s != null) {
try {
//使用url方式打开数据文件,实现在网络上使用。
url url = new url(getdocumentbase(), s);
bufferedreader br = new bufferedreader(
new inputstreamreader(url.openstream(), "jisautodetect"));
//读取第一行数据,如果为空则不执行
string line = br.readline();
if (line == null) return;
root = new defaultmutabletreenode(line);
nodeat[0] = root;
int level = 0;
while ((line = br.readline()) != null) {
//使用“|”分开数据
stringtokenizer st = new stringtokenizer(line, "|");
string token = st.nexttoken();
int n = countspaces(token);
//添加节点名称
defaultmutabletreenode node = new defaultmutabletreenode(token.trim());
//计算节点级数
for (int i = level + 1; i < n; i++) {
defaultmutabletreenode dummy = new defaultmutabletreenode("");
nodeat[i].add(dummy);
nodeat[i+1] = dummy;
}
level = n;
nodeat[n].add(node);
nodeat[n+1] = node;
//对“|”符号后的数据进行处理
if (st.hasmoretokens()) {
token = st.nexttoken();
try {
url = new url(token.trim());
links.put(node, url);
} catch (malformedurlexception ex) {
ex.printstacktrace();
}
}
}
} catch (malformedurlexception e) {
e.printstacktrace();
} catch (ioexception e) {
e.printstacktrace();
}
s = getparameter("target");
if (s != null) target = s.trim();
jtree tree = new jtree(root);
//添加树的选择监听
tree.addtreeselectionlistener(this);
jscrollpane jsp = new jscrollpane(tree);
getcontentpane().add(jsp, borderlayout.center);
}
}
/**
*<br>方法说明:计算空格数
*<br>输入参数:
*<br>返回类型:
*/
private int countspaces(string s) {
int n = 0;
while (s.charat(n) == ´ ´) {
n++;
}
return n;
}
/**
*<br>方法说明:树选择监听实现方法
*<br>输入参数:treeselectionevent e 选择树节点事件
*<br>返回类型:
*/
public void valuechanged(treeselectionevent e) {
treepath path = e.getpath();
object o = path.getlastpathcomponent();
url url = (url)links.get(o);
if (url != null) {
system.out.println(links.get(o));
//打开连接,通知浏览器加载网页(使用浏览器打开applet的情况下)
context.showdocument(url);
}
}
}
闽公网安备 35060202000074号