📄 ucoolmanager.java
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
public class UCoolManager extends JFrame
{
public static final ImageIcon ICON_COMPUTER =new ImageIcon("computer.gif");
public static final ImageIcon ICON_DISK =new ImageIcon("disk.gif");
public static final ImageIcon ICON_FOLDER =new ImageIcon("folder.gif");
public static final ImageIcon ICON_EXPANDEDFOLDER =new ImageIcon("expandedfolder.gif");
protected JTree m_tree;
protected DefaultTreeModel m_model;
protected JTextField m_display;
protected JToolBar toolbar;
protected JButton downloadButton;
protected JButton uploadButton;
public UCoolManager()
{
super("Directories Tree");
init();
setSize(400, 300);
setVisible(true);
}
//初始化
public void init(){
DefaultMutableTreeNode top = new DefaultMutableTreeNode(
new IconData(ICON_COMPUTER, null, "我的硬盘"));//Tree的顶层目录
//DefaultMutableTreeNode netHardDisk=new DefaultMutableTreeNode(new IconData(ICON_COMPUTER,null,"网络硬盘"));//定义网络硬盘的目录
DefaultMutableTreeNode node;
File[] roots = File.listRoots();
for (int k=0; k<roots.length; k++)
{
node = new DefaultMutableTreeNode(new IconData(ICON_DISK,null, new FileNode(roots[k])));
top.add(node);
node.add( new DefaultMutableTreeNode(new Boolean(true)));
}
/*网络硬盘设置子文件夹
for (int k=0; k<roots.length; k++)
{
node = new DefaultMutableTreeNode(new IconData(ICON_DISK,
null, new FileNode(roots[k])));
netHardDisk.add(node);
node.add( new DefaultMutableTreeNode(new Boolean(true)));
//node.add( new DefaultMutableTreeNode("OK"));
}
top.add(netHardDisk);
*/
m_model = new DefaultTreeModel(top);
m_tree = new JTree(m_model);
m_tree.putClientProperty("JTree.lineStyle", "Angled");
//设置Tree目录格式
TreeCellRenderer renderer = new IconCellRenderer();
m_tree.setCellRenderer(renderer);//
m_tree.addTreeExpansionListener(new DirExpansionListener());
m_tree.addTreeSelectionListener(new DirSelectionListener());
m_tree.getSelectionModel().setSelectionMode(
//TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);//只能连选
TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION );//不连选,可以跳选
m_tree.setShowsRootHandles(true);
m_tree.setEditable(false);
toolbar=new JToolBar();//
//toolbar.setBorder(BorderFactory.createLineBorder(Color.black));
downloadButton=new JButton(new ImageIcon("download.gif"));
uploadButton=new JButton(new ImageIcon("upload.gif"));
downloadButton.setBorder(BorderFactory.createRaisedBevelBorder());
uploadButton.setBorder(BorderFactory.createRaisedBevelBorder());
downloadButton.setToolTipText("下载");
uploadButton.setToolTipText("上传");
downloadButton.setActionCommand("downloadButton");
downloadButton.addActionListener(new ButtonAction());
//uploadButton.addActionListener();
toolbar.add(downloadButton);
toolbar.add(uploadButton);
getContentPane().add(toolbar,BorderLayout.NORTH);
JScrollPane s = new JScrollPane();
s.getViewport().add(m_tree);
getContentPane().add(s, BorderLayout.CENTER);
m_display = new JTextField();
//m_display.setBackground(Color.BLUE);
m_display.setEditable(false);
getContentPane().add(m_display, BorderLayout.SOUTH);
WindowListener wndCloser = new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
};
addWindowListener(wndCloser);
}
//得到树节点
DefaultMutableTreeNode getTreeNode(TreePath path)
{
return (DefaultMutableTreeNode)(path.getLastPathComponent());
}
//得到文件节点
FileNode getFileNode(DefaultMutableTreeNode node)
{
if (node == null)
return null;
Object obj = node.getUserObject();
if (obj instanceof IconData)
obj = ((IconData)obj).getObject();
if (obj instanceof FileNode)
return (FileNode)obj;
else
return null;
}
// Make sure expansion is threaded and updating the tree model
// only occurs within the event dispatching thread.
class DirExpansionListener implements TreeExpansionListener
{
public void treeExpanded(TreeExpansionEvent event)
{
final DefaultMutableTreeNode node = getTreeNode(
event.getPath());
final FileNode fnode = getFileNode(node);
Thread runner = new Thread()
{
public void run()
{
if (fnode != null && fnode.expand(node))
{
Runnable runnable = new Runnable()
{
public void run()
{
m_model.reload(node);
}
};
SwingUtilities.invokeLater(runnable);
}
}
};
runner.start();
m_model.reload(node);
}
public void treeCollapsed(TreeExpansionEvent event) {}
}
class DirSelectionListener
implements TreeSelectionListener
{
public void valueChanged(TreeSelectionEvent event)
{
/*单选显示的路径
DefaultMutableTreeNode node = getTreeNode(event.getPath());
FileNode fnode = getFileNode(node);
if (fnode != null)
m_display.setText(fnode.getFile().getAbsolutePath());
*/
/*
String allPath="";
FileNode fnode=new FileNode();
DefaultMutableTreeNode node;
TreePath[] tse=event.getPaths();
for(int i=1;i<tse.length;i++){
System.out.println(tse.length);
node=getTreeNode(tse[i]);
fnode=getFileNode(node);
allPath+=fnode.getFile().getAbsoluteFile();
if(fnode!=null){
m_display.setText(allPath);
}
else
m_display.setText("");
}
}*/
//多个路径并选
TreePath[] tp=m_tree.getSelectionPaths();
String allPath="";
FileNode fnode=new FileNode();
DefaultMutableTreeNode node;
for(int i=0;i<tp.length;i++){
node=getTreeNode(tp[i]);
fnode=getFileNode(node);
allPath+=fnode.getFile().getAbsoluteFile()+" & ";
}
if(fnode!=null){
int i=allPath.lastIndexOf("&");
allPath=allPath.substring(0,i);
m_display.setText(allPath);
}
else
m_display.setText("");
}
}
public static void main(String argv[])
{
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Font font=new Font("宋体",Font.PLAIN,12);
String names[]={"Label","CheckBox","PopupMenu","TextPane",
"MenuItem","CheckBoxMenuItem","JRadioButtonMenuItem",
"ComboBox","Button","Tree","ScrollPane","TabbedPane",
"EditorPane","TitledBorder","Menu","TextArea","OptionPane",
"MenuBar","ToolBar","ToggleButton","ToolTip","ProgressBar",
"TableHeader","Panel","List","ColorChooser","PasswordField",
"TextField","Table","Label","Viewport","RadioButtonMenuItem",
"RadioButton"};
for(int i=0;i<names.length;i++)UIManager.put(names[i]+".font",font);
UIManager.put("Label.foreground",Color.black);
UIManager.put("Border.foreground",Color.black);
UIManager.put("TitledBorder.titleColor",Color.black);
new UCoolManager();
}
catch(Exception e){
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -