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

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

编程之家 2023-10-13 79次浏览

大家好,java 什么树相信很多的网友都不是很明白,包括java swing jtree 什么是树的数据模型也是一样,不过没有关系,接下来就来为大家分享关于java 什么树和java swing jtree 什么是树的数据模型的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

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

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

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

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

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

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

1.构建树

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

DefaultMutableTreeNode country= new DefaultMutableTreeNode("USA");

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

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 动态的给树添加新节点 望高手指点啊

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

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试题: 关于苹果树结果的。

恐惧清单

一个平凡的上班族麦克·英泰尔,37岁那年做了一年疯狂的决定,放弃他薪水优厚的记者工作,把身上仅有的3块多美元捐给街角的流浪汉,只带了干净的内衣裤,由阳光明媚的加州,靠搭便车与陌生人的仁慈,横越美国。

他的目的地是美国东海岸北卡罗莱纳州的恐怖角。

这只是他精神快崩溃时做的一个仓促决定。某个午后他忽然哭了,因为他问了自己一个问题:如果有人通知我今天死期到了,我会后悔吗?答案竟是那么肯定。虽然他有不错的工作,有美丽的女友,有至亲好友,但他发现自己这辈子从来没有下过什么赌注,平顺的人生没有高峰或谷底。

他为自己懦弱的前半生而哭。

一念之间,他选择了北卡罗莱纳州的恐怖角作为最终目的地,借以象征他征服生命中所有恐惧的决心。

他检讨自己,很诚实地为自己的恐惧开出一张清单:打小时候他就怕保姆、怕邮差、怕鸟、怕猫、怕蛇、怕蝙蝠、怕黑暗、怕大海、怕城市、怕荒野、怕热闹又怕孤独、怕失败又怕成功、怕精神崩溃……他无所不怕,却似乎“英勇”地当了记者。

这个懦弱的37岁的男人上路前竟还接到老奶奶的纸条:“你一定会在路上被人强暴。”但他成功了,4000多英里路,78顿餐,仰赖82个陌生人的仁慈。

没有接受过任何金钱的馈赠,在雷雨交加中睡在潮湿的睡袋里;也有几个像公路分尸案杀手或抢匪的家伙使他心惊胆战;在游民之家靠打工换取住宿;住过几个陌生的家庭;碰到过患有精神疾病的好心人。他终于来到恐怖角,接到女友寄给他的提款卡(他看见那个包裹时恨不得跳上柜台拥抱邮局职员。)他不是为了证明金钱无用,只是用这种正常人难以忍受的艰辛旅程来使自己面对所有恐惧。

恐惧角到了,但恐怖角并不恐怖。原来“恐怖角”这个名称,是由一位16世纪的探险家取的,本来叫“Cape Faire”,被讹写为“Cape Fear”。只是一个失误。

麦克·英泰尔终于明白:“这名字的不当,就像我自己的恐惧一样。我现在明白自己一直害怕做错事,我最大的耻辱不是恐惧死亡,而是恐惧生命。”

花了6个星期的时间,到了一个和自己想像无关的地方,他得到了什么?

得到的不是目的,而是过程。

在这里找到的:

你愿意的话自己找一下,偶懒呀!

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

java中t表示什么类型,JAVA 中<t>是什么意思, java的t是什么意思啊,t在java中是什么意思