如何用Java实现类似Windows资源管理器的文件列表,可以显示图标 象Windows资源管理器的列表窗口,可以动态的设置显示方式,大图标,小图标,详细列表 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先试试这个:http://www.programfan.com/blog/article.asp?id=5108 import org.eclipse.swt.widgets.*;public class Snippet33 {public static void main (String [] args) { Display display = new Display (); Shell shell = new Shell (display); shell.open (); DirectoryDialog dialog = new DirectoryDialog (shell); dialog.setFilterPath ("c:\\"); //Windows specific System.out.println ("RESULT=" + dialog.open ()); while (!shell.isDisposed()) { if (!display.readAndDispatch ()) display.sleep (); } display.dispose ();}} 谢谢楼上的回复.你在代码中用到的包,从哪儿可以得到?我用Eclipse,只提示类型错误,没有提示需要导入的包 楼上的用的是swt包,看见这个没org.eclipse.swt.widgets下面是列表,你自己再改改吧,用的是jdk的jtree写的遍列所有盘文件夹import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.File;import java.io.IOException;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTree;import javax.swing.event.TreeExpansionEvent;import javax.swing.event.TreeExpansionListener;import javax.swing.filechooser.FileSystemView;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.TreePath;import javax.swing.tree.TreeSelectionModel;public class FileTree extends JDialog { private JLabel path_ = new JLabel(" "); private JTree tree_; private static String filepath; public FileTree() { init(); } private void init() { JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); labelPanel.setSize(300, 40); JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); JLabel current = new JLabel("Current Selection"); labelPanel.setLayout(new BorderLayout()); labelPanel.add(current, BorderLayout.NORTH); labelPanel.add(path_, BorderLayout.SOUTH); File[] roots = (new PFileSystemView()).getRoots(); FileNode nod = new FileNode (roots[0]); nod.explore(); tree_ = new JTree(new DefaultTreeModel(nod)); tree_.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); JScrollPane sp = new JScrollPane(tree_); sp.setBorder(BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140))); labelPanel.setBorder(BorderFactory.createEmptyBorder(0, 19, 0, 0)); JButton buttonOK = new JButton("OK"); buttonOK.setPreferredSize(new Dimension(70, 25)); JButton buttonCanel = new JButton("Canel"); buttonCanel.setPreferredSize(new Dimension(70, 25)); buttonPanel.add(buttonOK); buttonPanel.add(buttonCanel); //canel action buttonCanel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); //ok action buttonOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.err.println(filepath); } }); tree_.setShowsRootHandles(true); tree_.addTreeExpansionListener(new TreeExpansionListener() { public void treeCollapsed(TreeExpansionEvent e) { } public void treeExpanded (TreeExpansionEvent e) { TreePath path = e.getPath(); FileNode node = (FileNode)path.getLastPathComponent(); if (!node.isExplored()) { DefaultTreeModel model = ( (DefaultTreeModel) tree_.getModel()); node.explore(); model.nodeStructureChanged(node); } } }); tree_.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { JTree tree = (JTree)e.getSource(); int row = tree.getRowForLocation(e.getX(), e.getY()); if (row == -1) { return; } TreePath path = tree.getPathForRow(row); if (path == null) { return; } FileNode node = (FileNode)path.getLastPathComponent(); if (node == null) { return; } filepath = node.getString(); path_.setText(filepath); } }); getContentPane().add(sp, BorderLayout.CENTER); getContentPane().add(labelPanel, BorderLayout.NORTH); getContentPane().add(buttonPanel, BorderLayout.SOUTH); setSize(350, 400); this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); this.setTitle("File Tree"); } class FileNode extends DefaultMutableTreeNode { private boolean explored_ = false; public FileNode(File file) { setUserObject (file); } public boolean getAllowChildren() { 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 = getFile (); String filename = file.toString(); int index = filename.lastIndexOf("\\"); return (index != -1 && index != filename.length() - 1) ? filename.substring(index + 1) : filename; } public String getString() { File file = getFile (); String filename = file.getAbsolutePath(); return filename; } public void explore() { if (!isDirectory()) { return; } if (!isExplored()) { File file = getFile (); File [] children = file.listFiles(); for (int i = 0; i < children.length; ++i) { if (children[i].isDirectory()) { add(new FileNode (children[i])); } } explored_ = true; } } } class PFileSystemView extends FileSystemView { public File createNewFolder(File containingDir) throws IOException { return null; } } public static void main(String[] args) { (new FileTree()).show(true); }} 左侧选择的路径是filepath这个变量,右侧是在filepath下遍历,这个自己写吧,我现在没有 javase this的理解 Java开发的足疗软件 北京诚聘架构师、java高级工程师 有Jbuilder的视频教程吗? 关于applet中显示swing的问题 包的继承问题,请帮忙看看,谢谢。 对象和类有必然的等同关系吗 我怎样才能运行我的java程序(我装了JavaTM 2 SDK, Standard Edition Version 1.3.1,我的系统是2000server,没有dos) java super的理解 请问在98系统下如何配置JDK ? java应用程序中使用odbc数据源连接数据库,如何获取已经定义的odbc数据源的用户名和密码?
http://www.programfan.com/blog/article.asp?id=5108
Display display = new Display ();
Shell shell = new Shell (display);
shell.open ();
DirectoryDialog dialog = new DirectoryDialog (shell);
dialog.setFilterPath ("c:\\"); //Windows specific
System.out.println ("RESULT=" + dialog.open ());
while (!shell.isDisposed()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}}
你在代码中用到的包,从哪儿可以得到?
我用Eclipse,只提示类型错误,没有提示需要导入的包
下面是列表,你自己再改改吧,用的是jdk的jtree写的遍列所有盘文件夹import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.filechooser.FileSystemView;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;public class FileTree extends JDialog {
private JLabel path_ = new JLabel(" ");
private JTree tree_;
private static String filepath;
public FileTree() {
init();
}
private void init() {
JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
labelPanel.setSize(300, 40);
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel current = new JLabel("Current Selection");
labelPanel.setLayout(new BorderLayout());
labelPanel.add(current, BorderLayout.NORTH);
labelPanel.add(path_, BorderLayout.SOUTH); File[] roots = (new PFileSystemView()).getRoots();
FileNode nod = new FileNode (roots[0]);
nod.explore();
tree_ = new JTree(new DefaultTreeModel(nod));
tree_.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); JScrollPane sp = new JScrollPane(tree_);
sp.setBorder(BorderFactory.createEtchedBorder(Color.white, new Color(148, 145, 140)));
labelPanel.setBorder(BorderFactory.createEmptyBorder(0, 19, 0, 0));
JButton buttonOK = new JButton("OK");
buttonOK.setPreferredSize(new Dimension(70, 25));
JButton buttonCanel = new JButton("Canel");
buttonCanel.setPreferredSize(new Dimension(70, 25));
buttonPanel.add(buttonOK);
buttonPanel.add(buttonCanel);
//canel action
buttonCanel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
//ok action
buttonOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.err.println(filepath);
}
});
tree_.setShowsRootHandles(true);
tree_.addTreeExpansionListener(new TreeExpansionListener() {
public void treeCollapsed(TreeExpansionEvent e) {
}
public void treeExpanded (TreeExpansionEvent e) {
TreePath path = e.getPath();
FileNode node = (FileNode)path.getLastPathComponent();
if (!node.isExplored()) {
DefaultTreeModel model = (
(DefaultTreeModel) tree_.getModel());
node.explore();
model.nodeStructureChanged(node);
}
}
});
tree_.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
JTree tree = (JTree)e.getSource();
int row = tree.getRowForLocation(e.getX(), e.getY());
if (row == -1) {
return;
}
TreePath path = tree.getPathForRow(row);
if (path == null) {
return;
}
FileNode node = (FileNode)path.getLastPathComponent();
if (node == null) {
return;
}
filepath = node.getString();
path_.setText(filepath);
}
});
getContentPane().add(sp, BorderLayout.CENTER);
getContentPane().add(labelPanel, BorderLayout.NORTH);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
setSize(350, 400);
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
this.setTitle("File Tree");
}
class FileNode extends DefaultMutableTreeNode {
private boolean explored_ = false;
public FileNode(File file) {
setUserObject (file);
}
public boolean getAllowChildren() {
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 = getFile ();
String filename = file.toString();
int index = filename.lastIndexOf("\\");
return (index != -1 && index != filename.length() - 1) ?
filename.substring(index + 1) :
filename;
}
public String getString() {
File file = getFile ();
String filename = file.getAbsolutePath();
return filename;
}
public void explore() {
if (!isDirectory()) {
return;
}
if (!isExplored()) {
File file = getFile ();
File [] children = file.listFiles();
for (int i = 0; i < children.length; ++i) {
if (children[i].isDirectory()) {
add(new FileNode (children[i]));
}
}
explored_ = true;
}
}
}
class PFileSystemView extends FileSystemView {
public File createNewFolder(File containingDir) throws IOException {
return null;
}
}
public static void main(String[] args) {
(new FileTree()).show(true);
}
}