「java删除节点」java删除树节点

博主:adminadmin 2023-01-20 13:48:08 470

今天给各位分享java删除节点的知识,其中也会对java删除树节点进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

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删除树节点的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。