关于swing的一个问题 想用swing界面来 实现对一个xml文件的增删改查首先将一个xml文件的各个节点的值显示出来 并提供增删改查的按钮由于以前没有接触过swing 希望大家帮忙 怎么实现啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package xmls.log;/**用xml文档记录登陆信息的一个主要类 *关于xml操作的例子 */import javax.swing.*;import java.io.File;import javax.swing.tree.*;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.*;public class LogRecorder{//日志记录 private static final long serialVersionUID = 1l; private DocumentBuilderFactory dbf = null;//XML文档构建工厂 private DocumentBuilder db = null;//XML文档构建器 private Document doc = null;//XML文档 private DefaultMutableTreeNode dmtn = null;//树状视图的节点 private JTree tree = null;//树状视图 private String userDir = System.getProperty("user.dir");//当前程序所在的目录 private boolean isSuccess = false; public boolean isLogRecorder(String filePath,String time,String name){ try{ // 创建XML文档构建工厂 dbf = DocumentBuilderFactory.newInstance(); // 允许解析名称空间 //dbf.setNamespaceAware(true); // 创建XML文档构建器 db = dbf.newDocumentBuilder(); // 获取XML文档 //System.out.println("当前用户的工作目录:"+System.getProperty("user.home")+"\n当前程序所在目录:"+System.getProperty("user.dir")); File f = new File(userDir+filePath);//文件路径 //System.out.print("file:"+userDir+filePath); doc = db.parse(f); // 规范化XML文档 doc.normalize(); /* }catch(Exception e){ JOptionPane.showMessageDialog(null,e.toString()+" 1","ERROR",JOptionPane.ERROR_MESSAGE); } */ //获取根结点 Node elm = doc.getDocumentElement(); //给树状图添加根结点 dmtn = new DefaultMutableTreeNode(elm.getNodeName()); //给树状图添加子结点 addChildNodes(dmtn,elm); //创建树 tree = new JTree(dmtn); //在第一行添加 int selRow = 1;//tree.getRowForLocation(30,24); tree.setSelectionRow(selRow); //获取树状视图的选择路径 TreePath tp = tree.getSelectionPath(); //获取树状视图选择路径的最后一个节点 DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent(); //如果选中了有效的"log"节点 if (/*selRow != -1 && */node.toString().equals("log") && node.getParent() != null) //插入结点 insertXML(filePath,time,name); //插入成功 isSuccess = true; }catch(Exception e){ JOptionPane.showMessageDialog(null,e.toString(),"ERROR",JOptionPane.ERROR_MESSAGE); } return isSuccess; } public void insertXML(String filePath,String time,String name){ //创建XML元素节点 Element elmLog = doc.createElement("log"); Element elmTime = doc.createElement("time"); Element elmName = doc.createElement("name"); //创建XML文本节点 Text txtTime = doc.createTextNode(time); Text txtName = doc.createTextNode(name); //添加XML节点 elmTime.appendChild(txtTime); elmName.appendChild(txtName); elmLog.appendChild(elmTime); elmLog.appendChild(elmName); //获取树状视图的选择路径 TreePath tp = tree.getSelectionPath(); //获取树状视图选择路径的最后一个节点 DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent(); //获取树状视图所选节点的"time"子节点内容 String currentTime = node.getChildAt(0).getChildAt(0).toString(); //获取所有的"time"子节点 NodeList nl = doc.getElementsByTagName("time"); //在节点列表中搜索与当前树状视图所选节点"time"子节点内容一样的元素 for(int i = 0; i < nl.getLength(); i++){ //获取"time"子节点的值 Node subNode = nl.item(i).getChildNodes().item(0); //如果一样 if(subNode.getNodeValue().equals(currentTime)){ //获取XML根节点 Node parentNode = subNode.getParentNode().getParentNode(); //插入新的log节点 parentNode.getParentNode().insertBefore(elmLog,parentNode); //规范化XML文档 doc.normalize(); try{ //创建转换工厂类 TransformerFactory tFactory = TransformerFactory.newInstance(); //创建转换类 Transformer transformer = tFactory.newTransformer(); //创建DOM源 DOMSource source = new DOMSource(doc); //创建XML的输出结果流 StreamResult result = new StreamResult( new java.io.File(userDir + filePath)); //利用DOM更新XML文件 transformer.transform(source, result); }catch (Exception e){ JOptionPane.showMessageDialog(null,e.toString(),"ERROR",JOptionPane.ERROR_MESSAGE); } //System.out.println("a"); break; }//end if }//end for //获取树状视图的模型 //DefaultTreeModel dtm = (DefaultTreeModel) tree.getModel(); //在树状视图中添加新的节点 DefaultMutableTreeNode logDmtn = new DefaultMutableTreeNode(elmLog.getNodeName()); DefaultMutableTreeNode timeDmtn = new DefaultMutableTreeNode(elmTime.getNodeName()); DefaultMutableTreeNode nameDmtn = new DefaultMutableTreeNode(elmTime.getNodeName()); DefaultMutableTreeNode timeValueDmtn = new DefaultMutableTreeNode(txtTime.getNodeValue()); DefaultMutableTreeNode nameValueDmtn = new DefaultMutableTreeNode(txtName.getNodeValue()); timeDmtn.add(timeValueDmtn); nameDmtn.add(nameValueDmtn); logDmtn.add(timeDmtn); logDmtn.add(nameDmtn); //在树状视图插入子节点 dmtn.insert(logDmtn, dmtn.getIndex(node)); //重新生成新的树状视图 tree = new JTree(dmtn); } //在树状视图中添加子节点的函数 public void addChildNodes(DefaultMutableTreeNode superDmtn, Node nodeName){ //获取当前节点的子节点列表 NodeList nl = nodeName.getChildNodes(); //循环遍历子节点列表 for(int i = 0; i < nl.getLength(); i++){ //得到一个子节点 Node node = nl.item(i); //如果不是文本子节点类型 if(node.getNodeType() != Node.TEXT_NODE){ // 创建树状视图的新子节点 DefaultMutableTreeNode subdmtn = new DefaultMutableTreeNode(node.getNodeName()); superDmtn.add(subdmtn); //如果还有子节点,递归添加下级子节点 if(node.hasChildNodes()){ addChildNodes(subdmtn, node); } } //如果是文本子节点类型,并且文本内容不为空 else if(!node.getNodeValue().trim().equals("")){ //将当前节点添加为树状视图的叶节点 DefaultMutableTreeNode subdmtn = new DefaultMutableTreeNode(node.getNodeValue()); superDmtn.add(subdmtn); } } }} 一个打乱数组顺序的问题 由4个字节数组转换为32位有符号整数-java语言实现 刚入手JAVA求问关于数组问题 运行一个关于栈的例子,有几个错误,不知是什么原因,请大家赐教。 求<java核心技术>电子书下载地址 JCREAT 各位老兄,请问在java中怎么解决这样<Node Name="N1" Value="1" />的XML 急急急,求教SERVLET,谁能解决给100分 谁有VisualCafe的光盘啊? 图片处理的问题!给分!一定给的!请放心! 诚心求教!程序最后一个无法解决的Bug! 求救:程序中取连接池的当前连接数(在线等)
*关于xml操作的例子
*/import javax.swing.*;
import java.io.File;
import javax.swing.tree.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;public class LogRecorder{//日志记录 private static final long serialVersionUID = 1l;
private DocumentBuilderFactory dbf = null;//XML文档构建工厂
private DocumentBuilder db = null;//XML文档构建器
private Document doc = null;//XML文档
private DefaultMutableTreeNode dmtn = null;//树状视图的节点
private JTree tree = null;//树状视图
private String userDir = System.getProperty("user.dir");//当前程序所在的目录
private boolean isSuccess = false;
public boolean isLogRecorder(String filePath,String time,String name){
try{
// 创建XML文档构建工厂
dbf = DocumentBuilderFactory.newInstance(); // 允许解析名称空间
//dbf.setNamespaceAware(true); // 创建XML文档构建器
db = dbf.newDocumentBuilder(); // 获取XML文档
//System.out.println("当前用户的工作目录:"+System.getProperty("user.home")+"\n当前程序所在目录:"+System.getProperty("user.dir"));
File f = new File(userDir+filePath);//文件路径
//System.out.print("file:"+userDir+filePath);
doc = db.parse(f);
// 规范化XML文档
doc.normalize();
/*
}catch(Exception e){
JOptionPane.showMessageDialog(null,e.toString()+" 1","ERROR",JOptionPane.ERROR_MESSAGE);
}
*/
//获取根结点
Node elm = doc.getDocumentElement();
//给树状图添加根结点
dmtn = new DefaultMutableTreeNode(elm.getNodeName());
//给树状图添加子结点
addChildNodes(dmtn,elm);
//创建树
tree = new JTree(dmtn);
//在第一行添加
int selRow = 1;//tree.getRowForLocation(30,24);
tree.setSelectionRow(selRow);
//获取树状视图的选择路径
TreePath tp = tree.getSelectionPath(); //获取树状视图选择路径的最后一个节点
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent();
//如果选中了有效的"log"节点
if (/*selRow != -1 && */node.toString().equals("log") && node.getParent() != null)
//插入结点
insertXML(filePath,time,name);
//插入成功
isSuccess = true;
}catch(Exception e){
JOptionPane.showMessageDialog(null,e.toString(),"ERROR",JOptionPane.ERROR_MESSAGE);
}
return isSuccess;
}
public void insertXML(String filePath,String time,String name){
//创建XML元素节点
Element elmLog = doc.createElement("log");
Element elmTime = doc.createElement("time");
Element elmName = doc.createElement("name");
//创建XML文本节点
Text txtTime = doc.createTextNode(time);
Text txtName = doc.createTextNode(name); //添加XML节点
elmTime.appendChild(txtTime);
elmName.appendChild(txtName);
elmLog.appendChild(elmTime);
elmLog.appendChild(elmName); //获取树状视图的选择路径
TreePath tp = tree.getSelectionPath(); //获取树状视图选择路径的最后一个节点
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent(); //获取树状视图所选节点的"time"子节点内容
String currentTime = node.getChildAt(0).getChildAt(0).toString(); //获取所有的"time"子节点
NodeList nl = doc.getElementsByTagName("time"); //在节点列表中搜索与当前树状视图所选节点"time"子节点内容一样的元素
for(int i = 0; i < nl.getLength(); i++){
//获取"time"子节点的值
Node subNode = nl.item(i).getChildNodes().item(0); //如果一样
if(subNode.getNodeValue().equals(currentTime)){
//获取XML根节点
Node parentNode = subNode.getParentNode().getParentNode(); //插入新的log节点
parentNode.getParentNode().insertBefore(elmLog,parentNode); //规范化XML文档
doc.normalize(); try{
//创建转换工厂类
TransformerFactory tFactory = TransformerFactory.newInstance(); //创建转换类
Transformer transformer = tFactory.newTransformer(); //创建DOM源
DOMSource source = new DOMSource(doc); //创建XML的输出结果流
StreamResult result = new StreamResult(
new java.io.File(userDir + filePath)); //利用DOM更新XML文件
transformer.transform(source, result);
}catch (Exception e){
JOptionPane.showMessageDialog(null,e.toString(),"ERROR",JOptionPane.ERROR_MESSAGE);
}
//System.out.println("a");
break;
}//end if
}//end for
//获取树状视图的模型
//DefaultTreeModel dtm = (DefaultTreeModel) tree.getModel(); //在树状视图中添加新的节点
DefaultMutableTreeNode logDmtn = new DefaultMutableTreeNode(elmLog.getNodeName());
DefaultMutableTreeNode timeDmtn = new DefaultMutableTreeNode(elmTime.getNodeName());
DefaultMutableTreeNode nameDmtn = new DefaultMutableTreeNode(elmTime.getNodeName());
DefaultMutableTreeNode timeValueDmtn = new DefaultMutableTreeNode(txtTime.getNodeValue());
DefaultMutableTreeNode nameValueDmtn = new DefaultMutableTreeNode(txtName.getNodeValue());
timeDmtn.add(timeValueDmtn);
nameDmtn.add(nameValueDmtn);
logDmtn.add(timeDmtn);
logDmtn.add(nameDmtn); //在树状视图插入子节点
dmtn.insert(logDmtn, dmtn.getIndex(node)); //重新生成新的树状视图
tree = new JTree(dmtn);
}
//在树状视图中添加子节点的函数
public void addChildNodes(DefaultMutableTreeNode superDmtn, Node nodeName){
//获取当前节点的子节点列表
NodeList nl = nodeName.getChildNodes(); //循环遍历子节点列表
for(int i = 0; i < nl.getLength(); i++){
//得到一个子节点
Node node = nl.item(i); //如果不是文本子节点类型
if(node.getNodeType() != Node.TEXT_NODE){
// 创建树状视图的新子节点
DefaultMutableTreeNode subdmtn = new DefaultMutableTreeNode(node.getNodeName());
superDmtn.add(subdmtn); //如果还有子节点,递归添加下级子节点
if(node.hasChildNodes()){
addChildNodes(subdmtn, node);
}
}
//如果是文本子节点类型,并且文本内容不为空
else if(!node.getNodeValue().trim().equals("")){
//将当前节点添加为树状视图的叶节点
DefaultMutableTreeNode subdmtn = new DefaultMutableTreeNode(node.getNodeValue());
superDmtn.add(subdmtn);
}
}
}
}