private String rootDirectory;
public LeftTree(String rootDirectory) {
this.rootDirectory = rootDirectory;
setLayout(new BorderLayout());
top = new DefaultMutableTreeNode(GlobalVar.SERVERNAME);
tree = new JTree(top);
tree.putClientProperty("JTree.lineStyle", "Angled");
修改public static final ImageIcon ICON_COMPUTER =
new ImageIcon(FrameMain.class.getResource("images/paste.gif"));
为
public static final ImageIcon ICON_COMPUTER =
new ImageIcon("images/paste.gif")
其他图标一样修改
public class ChooseDir extends JDialog
{
public static final ImageIcon ICON_COMPUTER =
new ImageIcon(FrameMain.class.getResource("computer.gif"));
public static final ImageIcon ICON_DISK =
new ImageIcon(FrameMain.class.getResource("disk.gif"));
public static final ImageIcon ICON_FOLDER =
new ImageIcon(FrameMain.class.getResource("folder.gif"));
public static final ImageIcon ICON_EXPANDEDFOLDER =
new ImageIcon(FrameMain.class.getResource("expandedfolder.gif"));
JButton jButtonOK = new JButton("OK");
JButton jButtonCancel = new JButton("Cancel");
protected JTree m_tree;
protected DefaultTreeModel m_model;
protected JTextField m_display;
JTextField m_textPath;
// 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();
}
public void treeCollapsed(TreeExpansionEvent event) {}
}
class IconCellRenderer extends JLabel implements TreeCellRenderer
{
protected Color m_textSelectionColor;
protected Color m_textNonSelectionColor;
protected Color m_bkSelectionColor;
protected Color m_bkNonSelectionColor;
protected Color m_borderSelectionColor;
public boolean expand(DefaultMutableTreeNode parent)
{
DefaultMutableTreeNode flag =
(DefaultMutableTreeNode)parent.getFirstChild();
if (flag==null) // No flag
return false;
Object obj = flag.getUserObject();
if (!(obj instanceof Boolean))
return false; // Already expanded
parent.removeAllChildren(); // Remove Flag
File[] files = listFiles();
if (files == null)
return true;
Vector v = new Vector();
for (int k = 0; k < files.length; k++)
{
File f = files[k];
if (!(f.isDirectory()))
continue;
FileNode newNode = new FileNode(f);
boolean isAdded = false;
for (int i = 0; i < v.size(); i++)
{
FileNode nd = (FileNode)v.elementAt(i);
if (newNode.compareTo(nd) < 0)
{
v.insertElementAt(newNode, i);
isAdded = true;
break;
}
}
if (!isAdded)
v.addElement(newNode);
}
for (int i = 0; i < v.size(); i++)
{
FileNode nd = (FileNode)v.elementAt(i);
IconData idata = new IconData(ChooseDir.ICON_FOLDER,
ChooseDir.ICON_EXPANDEDFOLDER, nd);
DefaultMutableTreeNode node = new
DefaultMutableTreeNode(idata);
parent.add(node);
if (nd.hasSubDirs())
node.add(new DefaultMutableTreeNode(
new Boolean(true) ));
}
return true;
}
public boolean hasSubDirs()
{
File[] files = listFiles();
if (files == null)
return false;
for (int k = 0; k < files.length; k++)
{
if (files[k].isDirectory())
return true;
}
return false;
}
public int compareTo(FileNode toCompare)
{
return m_file.getName().compareToIgnoreCase(
toCompare.m_file.getName() );
}
public class ChooseDir extends JDialog
{
public static final ImageIcon ICON_COMPUTER =
new ImageIcon(FrameMain.class.getResource("images/paste.gif"));
public static final ImageIcon ICON_DISK =
new ImageIcon(FrameMain.class.getResource("images/new.gif"));
public static final ImageIcon ICON_FOLDER =
new ImageIcon(FrameMain.class.getResource("images/folder.gif"));
public static final ImageIcon ICON_EXPANDEDFOLDER =
new ImageIcon(FrameMain.class.getResource("images/expandedfolder.gif"));
JButton jButtonOK = new JButton("OK");
JButton jButtonCancel = new JButton("Cancel");
protected JTree m_tree;
protected DefaultTreeModel m_model;
protected JTextField m_display;
JTextField m_textPath;
// 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();
}
public void treeCollapsed(TreeExpansionEvent event) {}
}
class IconCellRenderer extends JLabel implements TreeCellRenderer
{
protected Color m_textSelectionColor;
protected Color m_textNonSelectionColor;
protected Color m_bkSelectionColor;
protected Color m_bkNonSelectionColor;
protected Color m_borderSelectionColor;
public boolean expand(DefaultMutableTreeNode parent)
{
DefaultMutableTreeNode flag =
(DefaultMutableTreeNode)parent.getFirstChild();
if (flag==null) // No flag
return false;
Object obj = flag.getUserObject();
if (!(obj instanceof Boolean))
return false; // Already expanded
parent.removeAllChildren(); // Remove Flag
File[] files = listFiles();
if (files == null)
return true;
Vector v = new Vector();
for (int k = 0; k < files.length; k++)
{
File f = files[k];
if (!(f.isDirectory()))
continue;
FileNode newNode = new FileNode(f);
boolean isAdded = false;
for (int i = 0; i < v.size(); i++)
{
FileNode nd = (FileNode)v.elementAt(i);
if (newNode.compareTo(nd) < 0)
{
v.insertElementAt(newNode, i);
isAdded = true;
break;
}
}
if (!isAdded)
v.addElement(newNode);
}
for (int i = 0; i < v.size(); i++)
{
FileNode nd = (FileNode)v.elementAt(i);
IconData idata = new IconData(ChooseDir.ICON_FOLDER,
ChooseDir.ICON_EXPANDEDFOLDER, nd);
DefaultMutableTreeNode node = new
DefaultMutableTreeNode(idata);
parent.add(node);
if (nd.hasSubDirs())
node.add(new DefaultMutableTreeNode(
new Boolean(true) ));
}
return true;
}
public boolean hasSubDirs()
{
File[] files = listFiles();
if (files == null)
return false;
for (int k = 0; k < files.length; k++)
{
if (files[k].isDirectory())
return true;
}
return false;
}
public int compareTo(FileNode toCompare)
{
return m_file.getName().compareToIgnoreCase(
toCompare.m_file.getName() );
}