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

jtree的程序查错,愿出150分,请教高手!!

    来源: 互联网  发布时间:2015-02-26

    本文导语:  程序是显示类似资源管理器的,但是只能显示到倒数第二层,即x目录下还有个y文件,只能显示到x。具体程序太长,请高手们提供mail! | To:gdsean(摇滚java) 确实是看不到,最底一层! To:cuijinjing(...

程序是显示类似资源管理器的,但是只能显示到倒数第二层,即x目录下还有个y文件,只能显示到x。具体程序太长,请高手们提供mail!

|
To:gdsean(摇滚java)
确实是看不到,最底一层!
To:cuijinjing(精灵) 
你的代码太长了,不如看看我的。


/*===============================DirBrowserTest.java=========================================*/

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import javax.swing.JOptionPane;







//------------------------------------------------------------------------------------------

public class DirBrowserTest
{
public static void main(String[] args)
{
JFrame frame = new DirBrowserTestFrame();
frame.show();
}
}

//--------------------------------------------------------------------------------------------

class DirBrowserTestFrame extends JFrame implements ActionListener,TreeSelectionListener
{
public DirBrowserTestFrame()
{
setTitle("DirBrowser");
setSize(400,300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});

root = new DefaultMutableTreeNode("root");
root.setAllowsChildren(true);
root.add(new DefaultMutableTreeNode(new File("C:\")));
root.add(new DefaultMutableTreeNode(new File("D:\")));
root.add(new DefaultMutableTreeNode(new File("E:\")));
root.add(new DefaultMutableTreeNode(new File("F:\")));
root.add(new DefaultMutableTreeNode(new File("G:\")));

model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.putClientProperty("JTree.lineStyle" , "Angled");
        tree.setRootVisible(false);
        tree.setEditable(true);   //把树设为可编辑

//setup the selection mode
tree.addTreeSelectionListener(this);
int mode = TreeSelectionModel.SINGLE_TREE_SELECTION;
tree.getSelectionModel().setSelectionMode(mode);

model.setAsksAllowsChildren(true);           //只有手动允许的节点可以表示为页节点

//this text area holds the current directory
textArea = new JTextArea();

JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1,2));
panel.add(new JScrollPane(tree));
panel.add(new JScrollPane(textArea));

AddDir = new JButton("AddDir");
Delete = new JButton("Delete");
AddDir.addActionListener(this);
Delete.addActionListener(this);
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.add(AddDir);
p.add(Delete);


Container contentPane = getContentPane();
contentPane.add(panel,"Center");
contentPane.add(p,"South");
}

//--------------------------------------------------------------------------------------------

public void actionPerformed(ActionEvent event)
{
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(selectedNode == null)return;
// DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode)selectedNode.getParent();
Object source = event.getSource();
if(source == AddDir)
{
if(!selectedNode.getAllowsChildren())return;
NewDirInfo n = new NewDirInfo("newdir");
if(newDialog == null)newDialog = new NewDirDialog(this);
if(newDialog.showDialog(n))
//String dirname = "";
//if((dirname = JOptionPane.showInputDialog(this , "Please input the new dir name" , "Input Dialog" , JOptionPane.QUESTION_MESSAGE)) != "")
{
try{
        String dirname = n.dirname;      //由对话框把要新建的文件夹名字取出
        System.out.println(dirname);     //just for debug!
        File parentDir = (File)selectedNode.getUserObject();
        File newFile = new File(parentDir + "\" + dirname);
        if(!newFile.exists())
             {
              newFile.mkdir();
              textArea.setText("Maked Directory " + dirname);
              }
        DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(newFile);
        newNode.setAllowsChildren(true);
        System.out.println(selectedNode.getChildCount());     //just for debug!
        model.insertNodeInto(newNode,selectedNode,selectedNode.getChildCount());
        TreeNode[] nodes = model.getPathToRoot(newNode);
        TreePath path = new TreePath(nodes);
        tree.scrollPathToVisible(path);
     }
 catch(ArrayIndexOutOfBoundsException e)
 {
 System.out.println("Error: " + e);
 }
}
return;
}
else if(source == Delete)
{
File targetDir = (File)selectedNode.getUserObject();
if(JOptionPane.showConfirmDialog(this , "Are you sure to delete " + targetDir.toString() , "Delete Confirmed" , JOptionPane.YES_NO_OPTION , JOptionPane.WARNING_MESSAGE) == JOptionPane.OK_OPTION)
{
String[] l = targetDir.list();
if(l.length == 0)
{
    targetDir.delete();
                    textArea.setText("Delete Directory " + targetDir);
                    if(selectedNode.getParent() != null)
                    model.removeNodeFromParent(selectedNode);
                    return;
}
    else
    {
JOptionPane.showMessageDialog(this , "你不能删除一个非空的文件夹!" , "出错" , JOptionPane.ERROR_MESSAGE);
        return;
}
}
}




}

//--------------------------------------------------------------------------------------------

public void valueChanged(TreeSelectionEvent event)
{
     textArea.setText("");
     TreePath path = tree.getSelectionPath();
     if(path == null) return;
     DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode)path.getLastPathComponent();
     if(selectNode.getAllowsChildren())Explorer2(selectNode);   //判断是否可以有子节点,才调用Explorer3(),并且显示该目录下所有文件名
     else
     {
 File temp = (File)selectNode.getUserObject();
 textArea.setText(temp.toString());          //只显示选中文件的文件名
 }

     }

//--------------------------------------------------------------------------------------------

/*    public void Explorer(DefaultMutableTreeNode p)   //检测目录的递归算法,一次性全部Load入,因此速度慢,而且无法显示变化,不可取
{
try{

boolean isAllFiles = true;
String[] list = path.list();
for(int i = 0; i

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












  • 相关文章推荐
  • 程序运行时,出现一个完全展开的JTree?
  • 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的类成员方法: getaccessiblecontext定义及介绍
  • 怎样得到Jtree选中项(要String形式)?
  • java命名空间javax.swing类jtree的类成员方法: selectionredirector定义及介绍
  • 如何响应JTREE中的节点点击事件??
  • java命名空间javax.swing类jtree.dynamicutiltreenode的类成员方法: haschildren定义及介绍
  • 请问:如何在java中的jtree控件中使用checkbox
  • java命名空间javax.swing类jtree的类成员方法: createtreemodellistener定义及介绍
  • 求助!!!JTree
  • java命名空间javax.swing类jtree的类成员方法: paramstring定义及介绍
  • 请问Swing中的JTree控件如何让监听一个子叶的鼠标事件?


  • 站内导航:


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

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

    浙ICP备11055608号-3