📄 domtree.06
字号:
import java.awt.*;import javax.swing.*;import javax.swing.tree.TreePath;import javax.swing.event.TreeModelListener;import javax.swing.tree.TreeModel;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;//载入xerces的DOM分析器import org.apache.xerces.parsers.DOMParser;/** * <CODE>DOMTreeView</CODE>会读入一个XML文件, * 使用DOM分析器分析后,将它显示到一个Java的JTree里。 * * @author <a href="mailto:james@eknow.com.tw">王景浩</a> * @version 0.5 */public class DOMTreeView extends JFrame{ public JTree tree; /** * 设置窗口的初始值 */ public void display(){ try { //将tree加到窗口里,同时设置在窗口的中间。 this.getContentPane().add(tree, BorderLayout.CENTER); //设置窗口大小 this.setSize(new Dimension(400, 300)); //显示窗口 this.show(); } catch(Exception e) { e.printStackTrace(); } } /** * 设置窗口关闭的事件 */ protected void processWindowEvent(java.awt.event.WindowEvent e) { super.processWindowEvent(e); if (e.getID() == java.awt.event.WindowEvent.WINDOW_CLOSING) { System.exit(0); } } public void parse(String uri){ //建立一个 DOM 分析器 DOMParser parser = new DOMParser(); try{ //显示标题 this.setTitle("目前文件: " + uri); parser.parse(uri); Document doc = parser.getDocument(); tree = new JTree(new MyTreeModel(doc)); } catch (Exception e){ System.err.println("分析错误: " + e.getMessage()); } } public static void main(String[] args) { if( args.length != 1) { System.out.println("使用方法: java DOMTreeView [XML文件名称]"); return; } String uri = args[0]; DOMTreeView dtv = new DOMTreeView(); dtv.parse(uri); dtv.display(); }}class MyTreeModel implements TreeModel { private Document root; public MyTreeModel(Document doc){ root = doc; } public Object getRoot() { return root; } public Object getChild(Object parent, int index) { return ((Node)parent).getChildNodes().item(index); } public int getChildCount(Object parent) { return ((Node)parent).getChildNodes().getLength(); } public boolean isLeaf(Object node) { return ((Node)node).getChildNodes().getLength() == 0; } public void valueForPathChanged(TreePath path, Object newValue) { } public int getIndexOfChild(Object parent, Object child) { NodeList nl = ((Node)parent).getChildNodes(); for(int i=0; i< nl.getLength(); i++) if( ((Node)child).equals(nl.item(i)) ) return i; return -1; } public void addTreeModelListener(TreeModelListener l) { } public void removeTreeModelListener(TreeModelListener l) { }};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -