「java删除节点」java删除树节点
今天给各位分享java删除节点的知识,其中也会对java删除树节点进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、JAVA中如何删除树中所选的节点?
- 2、在单链表中删除最小值结点,写出函数.(JAVA)
- 3、java中dom4j 解析xml。修改节点内容,删除节点。在线等,求大神
- 4、Java删除xml节点
- 5、java删除xml文件节点??
- 6、java 利用dom4j 怎么 删除根节点 求大神
JAVA中如何删除树中所选的节点?
//获得商品分类树形结构
private JTree getTree(){
if(tree ==null)
{
tree = new JTree(getTreeModel());
tree.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
// tree = new JTable(getModel());
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);
// 节点选择事件
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
treeSelection();
}
});
tree.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
if(e.getButton()==MouseEvent.BUTTON3)
{
int selRow = tree.getRowForLocation(e.getX(), e.getY());
tree.setSelectionRow(selRow);
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if(selRow != -1) {
if(e.getClickCount() == 1) {
// myRightClick(selRow, selPath);
selectedNode = (DefaultMutableTreeNode) selPath.getLastPathComponent();
showPopMenu(selRow,selPath,e.getX(),e.getY());
}
}
}
}
});
}
return tree;
}
/**
* 获得当前选择的商品对象
* @return
*
*/
private Goods getSelectedGoods(){
int row = table.getSelectedRow();
if(row!=-1)
{
String code = (String)getModel().getValueAt(row,0);
Goods g= gHandle.getGoodsByCode(code);
return g;
}
return null;
}
/**
* 树形结构上显示右键菜单
* @param selRow
* @param selPath
*
*/
private void showPopMenu(int selRow, TreePath path,int x,int y) {
// tree.add(getPopMenu());
if (path == null)
return;
//点的是根结点
if(selectedNode.isRoot())
{
JPopupMenu pop = getPopMenu(1,path,selRow);
// System.out.println(selRow);
this.getContentPane().add(pop);
pop.show(tree,x,y);
}
//叶结点
if(selectedNode.isLeaf())
{
JPopupMenu pop = getPopMenu(0,path,selRow);
this.getContentPane().add(pop);
pop.show(tree,x,y);
}
}
/**
* 创建右键菜单
* @param action
* @return
*
*/
private JPopupMenu getPopMenu(int action,final TreePath path,final int selRow){
if(pop==null)
{
pop = new JPopupMenu();
//新建类别事件处理
addItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String value = JOptionPane.showInputDialog("请输入新类别的名称:");
if(value==null||value.trim().length()==0)
return;
GoodsCategoryHandle gcHandle = new GoodsCategoryHandle();
if(gcHandle.isExsited(value))
{
JOptionPane.showMessageDialog(null, "该类别名称已经存在!", "提示", JOptionPane.ERROR_MESSAGE);
return ;
}
DefaultMutableTreeNode newNode =new DefaultMutableTreeNode(value);
treeModel.insertNodeInto(newNode,(MutableTreeNode)treeModel.getRoot(),selRow-1);
GoodsCategory gc = new GoodsCategory();
gc.setCategoryName(value);
//更新到数据库中
gcHandle.addCategory(gc);
}
});
//重命名类别名称事件处理
renameItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String value = JOptionPane.showInputDialog(null,"请输入新类别的名称:",selectedNode.toString());
if(value==null||value.trim().length()==0)
return;
GoodsCategoryHandle gcHandle = new GoodsCategoryHandle();
if(gcHandle.isExsited(value))
{
JOptionPane.showMessageDialog(null, "该类别名称已经存在!", "提示", JOptionPane.ERROR_MESSAGE);
return ;
}
GoodsCategory gc =gcHandle.getCategory(selectedNode.toString());
gc.setCategoryName(value);
//更新到数据库中
gcHandle.modifyCategory(gc);
selectedNode.setUserObject(value);
tree.setModel(getTreeModel());
}
});
//移除结点事件处理
delItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int i =JOptionPane.showConfirmDialog(null,
"慎重!删除类别后,该类别下的所有商品将全部被删除,确认后继续", "提示", JOptionPane.YES_NO_OPTION);
if(i==JOptionPane.YES_OPTION)
{
GoodsCategoryHandle gcHandle = new GoodsCategoryHandle();
GoodsHandle gHandle = new GoodsHandle();
int id = (gcHandle.getCategory(selectedNode.toString().trim())).getCategoryId();
ArrayList al = gHandle.getGoodsByCategory(id);
boolean b_bak = false;
//对删除商品的备分
try {
FileWriter out = new FileWriter("/"+CommonUtil.getTime()+"商品删除bak.db",true);
out.write("商品名称"+" "+"商品分类"+" "+
"商品别名"+" "+"商品单位"+" "+
"商品厂商"+" "+"商品库存上限"+" "+
"商品库存下限"+" "+
"商品库存下限"+" "+
"商品参考售价"+" "+
"商品实际库存");
out.write('\n');
for(int j=0;jal.size();j++)
{
Goods g = (Goods)al.get(j);
out.write(g.toString());
out.write('\n');
}
out.close();
b_bak=true;
} catch (IOException e1) {
e1.printStackTrace();
b_bak = false;
}
gcHandle.setCommit(false);
boolean g_del=gHandle.deleteByCategoryId(id);
boolean gc_del=gcHandle.deleteById(id);
//只有类别删除成功,该类别下的商品删除成功,并且备分成功后才提交删除
if(g_delgc_delb_bak)
gcHandle.commit();
else
{
// System.out.println("fail");
gcHandle.rollBack();
JOptionPane.showMessageDialog(null, "删除失败,可能是因为该类别下的商品存在销售记录,不能被删除!", "提示", JOptionPane.ERROR_MESSAGE);
}
tree.setModel(getTreeModel());
tree.setSelectionRow(0);
}
else
return;
}
});
pop.add(addItem);
pop.add(delItem);
pop.add(renameItem);
}
if(action ==1)
{
delItem.setEnabled(false);
renameItem.setEnabled(false);
}
if(action ==0)
{
delItem.setEnabled(true);
renameItem.setEnabled(true);
}
return pop;
}
/**
* 用户在商品分类树上的事件处理
*
*
*/
private void treeSelection(){
TreePath path = tree.getSelectionPath();
if (path == null)
return;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
.getLastPathComponent();
selectedCategory = cHandle.getCategory(node.toString());
// 若选中的是根节点
if (node.isRoot())
showAllGoods();
if(node.isLeaf()){
model.setRowCount(0);
ArrayList al = gHandle.getGoodsByCategoryName(node
.toString());
for (int i = 0; i al.size(); i++) {
Goods g = (Goods) al.get(i);
model.addRow(getRow(g));
}
}
}
public GoodsCategory getCategory(){
return this.selectedCategory;
}
/**
* 生产树形列表的数据模型
*
* @return
*
*/
private TreeModel getTreeModel() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode(
PropertiesUtil.getString("categoryTree.all"));
ArrayList categoryList = cHandle.getAllCategory();
// 添加子节点
for (int i = 0; i categoryList.size(); i++) {
GoodsCategory gc = (GoodsCategory) categoryList.get(i);
String name = gc.getCategoryName();
DefaultMutableTreeNode node = new DefaultMutableTreeNode(name);
root.add(node);
}
// 生产treeModel
treeModel = new DefaultTreeModel(root);
return treeModel;
}
在单链表中删除最小值结点,写出函数.(JAVA)
package testonly;
/**
* 删除单链表中所有最小的节点
* @author baidu an0011121
*
*/
public class LinkedListDemo {
/**
* 链表节点结构,直接在这里表示了,为了贴出来代码,你可以单独把这个节点类放到一个java文件中
* @author Administrator
*
*/
public static class Node {
public int data;
public Node next;
}
/**
* 核心方法,删除单链表中所有的最小的节点
* @param head
*/
public static void delMin(Node head) {
//寻找最小
Node current = head.next;
int min = current.data;
while (null != current) {
if (current.data min) {
min = current.data;
}
current=current.next;
}
//删除最小
Node previous = head;
current = head.next;
//两层循环为了删除所有最小
while(null!=current){
while (current.data != min) {
previous = current;
current = current.next;
}
previous.next=current.next;
current=previous.next;
}
}
/**
* 打印链表
* @param head
*/
public static void print(Node head){
String printStr="";
Node p=head.next;
while(null!=p){
printStr+=p.data+"--";
p=p.next;
}
System.out.println(printStr.substring(0,printStr.length()-3));
}
/**
* 构造链表
* @param arr
* @return
*/
public static Node construct(int[] arr){
Node headNode=new Node();
Node p=headNode;
for(int a:arr){
Node dataNode=new Node();
dataNode.data=a;
dataNode.next=null;
p.next=dataNode;
p=dataNode;
}
return headNode;
}
/**
* 主方法
* @param args
*/
public static void main(String[] args) {
int [] arr=new int[]{6,3,5,2,9,7,6,4,3,2,6,6,9,6,3,4,6,5,2};
//构造
Node head=construct(arr) ;
//删除最小
delMin(head);
//打印结果
print(head);
}
}
以上是刚写出来的。按照你的要求构造了单链表,然后测试了删除最小节点的方法。如果不符合你的要求或者哪块代码不明白,可以追问或者私信我。
java中dom4j 解析xml。修改节点内容,删除节点。在线等,求大神
我做过,时间长有点忘了,貌似用selectNode()可以选定指定名称节点List,if List.size()0;说明有节点,这样就可以修改了
Java删除xml节点
把:
for (int i = 0; i != menus.getLength(); ++i) {
改成:
for (int i = 0; i menus.getLength(); i++) {
把:
for (int j = 0; j != menuItems.getLength(); ++j) {
改成:
for (int j = 0; j menuItems.getLength(); j++) {
具体代码就不写,先通过document.getElementsByTagName找到menu节点,然后有两种方法:
1、调用menu.parentNode的removeChild,删除menu节点,然后重新创建一个menu节点;
2、menu.getChildNodes方法获得所有item节点,循环这些item节点,menu.removeChild方法删除。
请采纳。
java删除xml文件节点??
java删除xml文件节点,主要方式是先解析整个xml文件,然后根据节点的编号,进行删除,代码如下:
package test;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
public class XmlOprate {
Document doc;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
NodeList imags;
String path;
public NodeList getImags() {
return imags;
}
public void setImags(NodeList imags) {
this.imags = imags;
}
/**
* 构造方法
* @param path:xml文件的路径
* @param nodes:要解析的xml节点名称
*/
public XmlOprate(String path) {
super();
this.path = path;
System.out.println(System.getProperty("user.dir"));
}
/**
* 解析XML
* @param path
*/
public void readXml(){
try {
builder = factory.newDocumentBuilder();
Document doc=builder.parse(path);
doc.normalize();
NodeList imags =doc.getElementsByTagName("imags");
this.setImags(imags);
for (int i=0;iimags.getLength();i++){
Element link=(Element) imags.item(i);
System.out.print("title: ");
System.out.println(link.getElementsByTagName("title").item(0).getFirstChild().getNodeValue());
System.out.print("URL: ");
System.out.println(link.getElementsByTagName("url").item(0).getFirstChild().getNodeValue());
System.out.print("imgsrc: ");
System.out.println(link.getElementsByTagName("imgsrc").item(0).getFirstChild().getNodeValue());
System.out.println();
}
}catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* delete xml code //删除某个节点
* @param path
*/
public void delXmlCode(){
try {
builder = factory.newDocumentBuilder(); //拿到树节点
doc=builder.parse(path);
doc.normalize();
NodeList imags =doc.getElementsByTagName("imags"); //拿到某个节点的ID,接着进行删除
Element elink=(Element) imags.item(0);
elink.removeChild(elink.getElementsByTagName("imgsrc").item(0));
elink.removeChild(elink.getElementsByTagName("title").item(0));
elink.removeChild(elink.getElementsByTagName("url").item(0));
doc.getFirstChild().removeChild(elink);
TransformerFactory tFactory =TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new java.io.File(path));
transformer.transform(source, result);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
java 利用dom4j 怎么 删除根节点 求大神
试试remove 或者直接把除了 ?xml version="1.0" encoding="UTF-8"? 的其他内容清了不就行了。。。。。
关于java删除节点和java删除树节点的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。