当前位置:  技术问答>java相关

JTree是做什么用的?

    来源: 互联网  发布时间:2015-04-05

    本文导语:  如题;hehe  | JTree是做树用的,呵呵~ | http://java.sun.com/products/jfc/tsc/articles/treetable1/index.html | JTree, javax.swing.JTree JTree是java SWING中最复杂的组件之一,它最平常...

如题;hehe 

|
JTree是做树用的,呵呵~

|
http://java.sun.com/products/jfc/tsc/articles/treetable1/index.html

|
JTree, javax.swing.JTree
JTree是java SWING中最复杂的组件之一,它最平常的应用大概是以文件夹和树页图来显示
分层的数据,比如做个类似WINDOWS资源管理器的东东
帖篇我写的一个有关树的类,只是个类,需要加JFRAME之类的东西哦,这个类就有点象资源管理器,界面图标用的是LINUX的KDE
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.tree.*;
import javax.swing.border.*;
import java.applet.*;
public class TreeDemoX extends JPanel
{
private JSplitPane split=null;
private JPanel northpanel=null;
private JPanel southpanel=null;
private JTree tree=null;
private JScrollPane treescroll=null;
JScrollPane viewscroll=null;
AudioClip treechange,treeexpand;
private ViewPanel viewpanel=null;
public TreeDemoX()
{
setLayout(new BorderLayout());
treechange=Applet.newAudioClip(getClass().getResource("sound\opendir.wav"));
treeexpand=Applet.newAudioClip(getClass().getResource("sound\treeexpand.wav"));
treeInit();
viewpanel=new ViewPanel();
viewpanel.viewload(new File("c:\"),tree.getPathForRow(0),tree);
treescroll=new JScrollPane(tree);
viewscroll=new JScrollPane(viewpanel);
viewpanel.sss=viewscroll;
splitInit();
add(split,BorderLayout.CENTER);
}
public void treeInit()
{
tree=new JTree(createTreeModel());
tree.putClientProperty("JTree.lineStyle","Angled");
tree.setCellRenderer(new TreeRenderer());
tree.addTreeExpansionListener(
new TreeExpansionListener()
{
public void treeCollapsed(TreeExpansionEvent e)
{
treeexpand.play();
}
public void treeExpanded(TreeExpansionEvent e)
{
TreePath path=e.getPath();
treeNode node=(treeNode)path.getLastPathComponent();
if(!node.isex())
{
DefaultTreeModel model=(DefaultTreeModel)tree.getModel();
node.explore();
model.nodeStructureChanged(node);
}
treeexpand.play();
}
});
tree.addTreeSelectionListener(
new TreeSelectionListener()
{
public void valueChanged(TreeSelectionEvent e)
{
TreePath path=e.getPath();
treeNode node=(treeNode)path.getLastPathComponent();
viewpanel.viewload((File)(node.getUserObject()),new TreePath(node.getPath()),tree);
treechange.play();
viewscroll.validate();
}
});
}
public DefaultTreeModel createTreeModel()
{
File root=new File("C:\");
treeNode rootNode=new treeNode(root);
rootNode.explore();
return new DefaultTreeModel(rootNode);
}
public void splitInit()
{
if(treescroll!=null && viewpanel!=null)
{
split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,treescroll,viewscroll);
split.setContinuousLayout(true);
split.setOneTouchExpandable(true);
split.setDividerLocation(200);
}
}
//////////////////////////////////////////////TreeRenderer
class  TreeRenderer extends DefaultTreeCellRenderer
{
ImageIcon open,close,root;
public TreeRenderer()
{
open=new ImageIcon(getClass().getResource("image\tree\new\diropen.gif"));
close=new ImageIcon(getClass().getResource("image\tree\new\dirclose.gif"));
root=new ImageIcon(getClass().getResource("image\tree\new\root.gif"));
}
public Component getTreeCellRendererComponent(JTree tree,
Object vue,boolean selected,boolean expanded,boolean leaf,int row,boolean hasFocus)
{
JLabel label=(JLabel)(super.getTreeCellRendererComponent(tree,vue,selected,expanded,leaf,row,hasFocus));
if(row==0)
setIcon(root);
if(!leaf && row!=0)
{
if(hasFocus)
setIcon(open);
else
setIcon(close);
}
return label;
}
}//////////////////////////////////////////////////TreeRenderer
}
//////////////////////
//      treeModel       //
/////////////////////
class treeNode extends DefaultMutableTreeNode
{
boolean ex=false;
public treeNode(File f)
{
setUserObject(f);
}
public boolean isDirectory()
{
return ((File)getUserObject()).isDirectory();
}
public boolean isex()
{
return ex;
}
public File getFile()
{
return (File)getUserObject();
}
public boolean getAllowsChildren()
{
return isDirectory();
}
public boolean isLeaf()
{
return !isDirectory();
}
public String toString()
{
File file=getFile();
String filename=file.toString();
int index=filename.lastIndexOf("\");
if(index!=-1 && index!=filename.length()-1)
return filename.substring(index+1);
else 
return filename;
}
public void explore()
{
if(!isex() && isDirectory())
{
File[] files=getFile().listFiles();
for(int i=0;i

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.swing类jtree的类成员方法: jtree定义及介绍
  • 请问何用新的JTree刷新旧的jtree?
  • java命名空间javax.swing类jtree.accessiblejtree的类成员方法: jtree.accessiblejtree定义及介绍
  • 怎样使JTree对象可以自动有滚动条,
  • java命名空间javax.swing类jtree.treeselectionredirector的类成员方法: jtree.treeselectionredirector定义及介绍
  • JTREE
  • java命名空间javax.swing类jtree.accessiblejtree.accessiblejtreenode的类成员方法: jtree.accessiblejtree.accessiblejtreenode定义及介绍
  • jTree 刷新问题!
  • java命名空间javax.swing类jtree.treemodelhandler的类成员方法: jtree.treemodelhandler定义及介绍
  • 请详细介绍一下JTree的使用方法,88分奉送......................
  • java命名空间javax.swing类jtree.emptyselectionmodel的类成员方法: sharedinstance定义及介绍
  • JTree怎么用呀?
  • java命名空间javax.swing类jtree的类成员方法: selectionredirector定义及介绍
  • 怎样得到Jtree选中项(要String形式)?
  • java命名空间javax.swing类jtree.dynamicutiltreenode的类成员方法: haschildren定义及介绍
  • 如何响应JTREE中的节点点击事件??
  • java命名空间javax.swing类jtree的类成员方法: getaccessiblecontext定义及介绍
  • 程序运行时,出现一个完全展开的JTree?
  • java命名空间javax.swing类jtree的类成员方法: createtreemodellistener定义及介绍
  • 请问:如何在java中的jtree控件中使用checkbox
  • java命名空间javax.swing类jtree的类成员方法: paramstring定义及介绍
  • 求助!!!JTree


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3