首页编程java编程java树节点是什么,java swing jtree 什么是树的数据模型

java树节点是什么,java swing jtree 什么是树的数据模型

编程之家2023-10-14111次浏览

大家好,今天给各位分享java树节点是什么的一些知识,其中也会对java swing jtree 什么是树的数据模型进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

java树节点是什么,java swing jtree 什么是树的数据模型

java 动态的给树添加新节点 望高手指点啊

//先选中节点才能增加节点

import java.awt.*;

import java.awt.event.*;

java树节点是什么,java swing jtree 什么是树的数据模型

import javax.swing.*;

import javax.swing.event.*;

import javax.swing.tree.*;

java树节点是什么,java swing jtree 什么是树的数据模型

public class TreeTest implements ActionListener,TreeModelListener{

JLabel label=null;

JTree tree=null;

DefaultTreeModel treeModel=null;

String nodeName=null;//原有节点名称

public TreeTest(){

JFrame f=new JFrame("TreeTest");

Container contentPane=f.getContentPane();

DefaultMutableTreeNode root=new DefaultMutableTreeNode("资源管理器");

tree=new JTree(root);

tree.setEditable(true);

tree.addMouseListener(new MouseHandle());

treeModel=(DefaultTreeModel)tree.getModel();

treeModel.addTreeModelListener(this);

JScrollPane scrollPane=new JScrollPane();

scrollPane.setViewportView(tree);

JPanel panel=new JPanel();

JButton b=new JButton("新增节点");

b.addActionListener(this);

panel.add(b);

b=new JButton("删除节点");

b.addActionListener(this);

panel.add(b);

b=new JButton("清除所有节点");

b.addActionListener(this);

panel.add(b);

label=new JLabel("Action");

contentPane.add(panel,BorderLayout.NORTH);

contentPane.add(scrollPane,BorderLayout.CENTER);

contentPane.add(label,BorderLayout.SOUTH);

f.pack();

f.setVisible(true);

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

}

//本方法运行新增、删除、清除所有节点的程序代码.

public void actionPerformed(ActionEvent ae){

if(ae.getActionCommand().equals("新增节点")){

DefaultMutableTreeNode parentNode=null;

DefaultMutableTreeNode newNode=new DefaultMutableTreeNode("新节点");

newNode.setAllowsChildren(true);

TreePath parentPath=tree.getSelectionPath();

//取得新节点的父节点

parentNode=(DefaultMutableTreeNode)(parentPath.getLastPathComponent());

//由DefaultTreeModel的insertNodeInto()方法增加新节点

treeModel.insertNodeInto(newNode,parentNode,parentNode.getChildCount());

//tree的scrollPathToVisible()方法在使Tree会自动展开文件夹以便显示所加入的新节点。若没加这行则加入的新节点

//会被包在文件夹中,你必须自行展开文件夹才看得到。

tree.scrollPathToVisible(new TreePath(newNode.getPath()));

label.setText("新增节点成功");

}

if(ae.getActionCommand().equals("删除节点")){

TreePath treepath=tree.getSelectionPath();

if(treepath!=null){

//下面两行取得选取节点的父节点.

DefaultMutableTreeNode selectionNode=(DefaultMutableTreeNode)treepath.getLastPathComponent();

TreeNode parent=(TreeNode)selectionNode.getParent();

if(parent!=null){

//由DefaultTreeModel的removeNodeFromParent()方法删除节点,包含它的子节点。

treeModel.removeNodeFromParent(selectionNode);

label.setText("删除节点成功");

}

}

}

if(ae.getActionCommand().equals("清除所有节点")){

//下面一行,由DefaultTreeModel的getRoot()方法取得根节点.

DefaultMutableTreeNode rootNode=(DefaultMutableTreeNode)treeModel.getRoot();

//下面一行删除所有子节点.

rootNode.removeAllChildren();

//删除完后务必运行DefaultTreeModel的reload()操作,整个Tree的节点才会真正被删除.

treeModel.reload();

label.setText("清除所有节点成功");

}

}

public void treeNodesChanged(TreeModelEvent e){

TreePath treePath=e.getTreePath();

DefaultMutableTreeNode node=(DefaultMutableTreeNode)treePath.getLastPathComponent();

try{

int[] index=e.getChildIndices();

node=(DefaultMutableTreeNode)node.getChildAt(index[0]);

}catch(NullPointerException exc){}

label.setText(nodeName+"更改数据为:"+(String)node.getUserObject());

}

public void treeNodesInserted(TreeModelEvent e){

System.out.println("new node insered");

}

public void treeNodesRemoved(TreeModelEvent e){

System.out.println("node deleted");

}

public void treeStructureChanged(TreeModelEvent e){

System.out.println("Structrue changed");

}

public static void main(String[] args){

new TreeTest();

}

class MouseHandle extends MouseAdapter{

public void mousePressed(MouseEvent e){

try{

JTree tree=(JTree)e.getSource();

int rowLocation=tree.getRowForLocation(e.getX(),e.getY());

TreePath treepath=tree.getPathForRow(rowLocation);

TreeNode treenode=(TreeNode)treepath.getLastPathComponent();

nodeName=treenode.toString();

}catch(NullPointerException ne){}

}

}

}

java swing jtree 什么是树的数据模型

Swing树使用人们所熟悉的文件夹和树叶图来显示分层的数据。树由节点组成,节点可以是文件夹,也可以是树叶。文件夹可以有子节点,除根节点之外的所有节点都只有一个父节点。空的文件夹与树叶的不同之处就在于它允许有子节点。

除父节点和子节点外,树的节点还有一个用户对象(当使用DefaultTreeModel时就会呈现一个用户对象)。用户对象是Object类型,因此它提供了一个将任意对象与节点相关联的办法。

树有一个简单的模型,每一个JTree实例都要维护对绘制器和编辑器的引用,这个绘制器和编辑器被树中所有的节点所使用。表1中列出了swing.tree包中的主要类。

1.构建树

DefaultMutableTreeNode root= new DefaultMutableTreeNode("World");//为了构建一个默认的树模型,必须提供一个根节点

DefaultMutableTreeNode country= new DefaultMutableTreeNode("USA");

root.add(country);

...

DefaultTreeModel treeModel= new DefaultTreeModel(root);//用根节点构建一个DefaultTreeModel树模型

JTree tree= new JTree(treeModel);//用这个树模型构建一个JTree树

或者,直接将根节点传递给JTree构造器,那么这课树会自动构建一个默认的树模型:

JTree tree= new JTree(root);

Container contentPane= getContentPane();

contentPane.add(new JScrollPane(tree));

请问java里面Node是什么意思

Node是org.w3c.dom包下定义接口其子接口很多

javax.xml.soap的Node接口方法定义如下

getValue

String getValue()如果这是一个 Text节点,则返回此节点的值,否则返回此节点的直接子节点值。如果此 Node有一个直接子节点是 Text节点,则返回该直接子节点的值。如果存在一个以上的 Text节点,则返回第一个 Text节点的值。否则返回 null。

返回:

如果此节点是一个 Text节点或该文本由此 Node对象(该对象是一个 Text对象)的第一个直接子节点(如果这种子节点存在)包含,则返回带有此节点文本的 String;否则返回 null。

--------------------------------------------------------------------------------

setValue

void setValue(String value)如果这是一个 Text节点,则此方法会设置它的值,否则该方法设置此节点的直接(Text)子节点值。仅当存在子节点且该节点是 Text节点时,才能设置此节点的直接子节点值,如果没有子节点,则将创建 Text子节点。

抛出:

IllegalStateException-如果该节点不是 Text节点,也没有子节点或者有一个子节点但不是 Text节点。

从以下版本开始:

SAAJ 1.2

--------------------------------------------------------------------------------

setParentElement

void setParentElement(SOAPElement parent)

throws SOAPException将此 Node对象的父节点设置为给定的 SOAPElement对象。

参数:

parent-要设置为此 Node对象父节点的 SOAPElement对象

抛出:

SOAPException-如果将父节点设置为给定元素时出现错误

另请参见:

getParentElement()

--------------------------------------------------------------------------------

getParentElement

SOAPElement getParentElement()返回此 Node对象的父元素。如果树没有存入内存,则此方法抛出 UnsupportedOperationException。

返回:

此 Node对象的父节点 SOAPElement对象;如果此 Node对象为根节点,则返回 null

抛出:

UnsupportedOperationException-如果整个树没有存入内存

另请参见:

setParentElement(javax.xml.soap.SOAPElement)

--------------------------------------------------------------------------------

detachNode

void detachNode()从树中移除此 Node对象。

--------------------------------------------------------------------------------

recycleNode

void recycleNode()通知实现此 Node对象不再由应用程序使用,对于以后可能创建的节点,实现可以随意重用此对象。

调用 recycleNode方法意味着以前调用过 detachNode方法

OK,关于java树节点是什么和java swing jtree 什么是树的数据模型的内容到此结束了,希望对大家有所帮助。

java为什么用负载均衡(为什么学习Java开发你知道吗)javaee框架是什么意思,J2EE是什么意思啊