java树节点是什么,java swing jtree 什么是树的数据模型
大家好,今天给各位分享java树节点是什么的一些知识,其中也会对java swing jtree 什么是树的数据模型进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
java 动态的给树添加新节点 望高手指点啊
//先选中节点才能增加节点
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
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 什么是树的数据模型的内容到此结束了,希望对大家有所帮助。