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

怎么在JTree中显示userObject?

    来源: 互联网  发布时间:2015-01-31

    本文导语:  我为一个userobject创建了jtree,需要在节点中显示userobject的一个属性 public class userobject{   String name;   boolean isHidden;   public String toString(){     return name;   } } 请问如何在jtree中的节点显示为userobject的name?用usero...

我为一个userobject创建了jtree,需要在节点中显示userobject的一个属性
public class userobject{
  String name;
  boolean isHidden;

  public String toString(){
    return name;
  }
}
请问如何在jtree中的节点显示为userobject的name?用userobject的toString 怎么不管用?

|
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.EventObject;

public class Test extends JFrame {
public Test() {
final JTree tree = new JTree(createTreeModel());
JScrollPane scrollPane = new JScrollPane(tree);

getContentPane().add(scrollPane, BorderLayout.CENTER);
getContentPane().add(GJApp.getStatusArea(), 
 BorderLayout.SOUTH);

tree.addTreeExpansionListener(new TreeExpansionListener(){
public void treeCollapsed(TreeExpansionEvent e) {
}
public void treeExpanded(TreeExpansionEvent e) {
UpdateStatus updateThread;
TreePath path = e.getPath();
FileNode node = (FileNode)
   path.getLastPathComponent();

if( ! node.isExplored()) {
DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
GJApp.updateStatus("exploring ...");

UpdateStatus us = new UpdateStatus();
us.start();

node.explore();
model.nodeStructureChanged(node);
}
}
class UpdateStatus extends Thread {
public void run() {
try { Thread.currentThread().sleep(450); }
catch(InterruptedException e) { }

SwingUtilities.invokeLater(new Runnable() {
public void run() {
GJApp.updateStatus(" ");
}
});
}
}
});
}
private DefaultTreeModel createTreeModel() {
File root = new File("E:/");
FileNode rootNode = new FileNode(root);

rootNode.explore();
return new DefaultTreeModel(rootNode);
}
public static void main(String args[]) {
GJApp.launch(new Test(),"JTree File Explorer",
 300,300,450,400);
}
}
class FileNode extends DefaultMutableTreeNode {
private boolean explored = false;

public FileNode(File file)  { 
setUserObject(file); 
}
public boolean getAllowsChildren() { return isDirectory(); }
public boolean isLeaf()  { return !isDirectory(); }
public File getFile() { return (File)getUserObject(); }

public boolean isExplored() { return explored; }

public boolean isDirectory() {
File file = getFile();
return file.isDirectory();
}
public String toString() {
File file = (File)getUserObject();
String filename = file.toString();
int index = filename.lastIndexOf(File.separator);

return (index != -1 && index != filename.length()-1) ? 
filename.substring(index+1) : 
filename;
}
public void explore() {
if(!isDirectory())
return;

if(!isExplored()) {
File file = getFile();
File[] children = file.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