📄 left_treepane.java
字号:
/**
* 该类实现了一个树模型并将实现的模型
* 共添加了两个选项卡面板,"树"及"我的相册 "
* */
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.tree.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.util.List;
public class Left_treepane extends JPanel
{
public static ImageIcon computerIcon;//"我的电脑"图标
public static ImageIcon driverIcon; //"驱动器"图标
public static ImageIcon folderIcon; //"文件夹"图标
public static ImageIcon fileIcon; //"文件"图标
static String temppath=System.getProperty("java.io.tmpdir")+File.separator
+"我的电脑";
JTree myTree=new JTree(createModel());
JScrollPane jscrollpane=null;
MyTreeNode selectedNode=null;
JTabbedPane jtp=null;
MyPhoto myphoto=new MyPhoto();//"我的相册"面板
public Left_treepane()
{
jinit();
jtp=new JTabbedPane();
jscrollpane=new JScrollPane(myTree);
jtp.addTab("浏览目录",jscrollpane);
jtp.addTab("我的相册",myphoto);
this.setLayout(new GridLayout(1,1));
add(jtp);
}
public void jinit()
{
try {
computerIcon = new ImageIcon(Left_treepane.class.getResource("images/Computer.gif"));//我的电脑图标
driverIcon = new ImageIcon(Left_treepane.class.getResource("images/Driver.gif"));//驱动器图标
folderIcon = new ImageIcon(Left_treepane.class.getResource("images/Folder.gif"));//文件夹图标
fileIcon = new ImageIcon(Left_treepane.class.getResource("images/File.gif"));//文件图标
}
catch (Exception e)
{
System.out.println("ERROR loading image files !");
}
myTree.setBackground(Color.WHITE);
myTree.addTreeSelectionListener(new Left_treepane_selection(this));
myTree.addTreeWillExpandListener(new Left_treepane_willExpand(this));
}
public DefaultTreeModel createModel()
{
File mycomputer=new File(temppath);
try
{
mycomputer.mkdirs();
mycomputer.deleteOnExit();
}
catch(Exception e){}
MyTreeNode rootNode=new MyTreeNode(mycomputer);
File[] roots=MyUtility.getRoots();
MyTreeNode parent;
for(int i=0;i<roots.length;i++)
{
parent=new MyTreeNode(roots[i]);
parent.explore();
rootNode.add(parent);
}
return new DefaultTreeModel(rootNode);
}
public void leftwillExpand(TreeExpansionEvent event)
{
TreePath path=event.getPath();
MyTreeNode selectedNode=(MyTreeNode)path.getLastPathComponent();
if(!selectedNode.isExplored())
selectedNode.explore();
}
public void treeSelection(TreeSelectionEvent e)
{
TreePath path=e.getPath();
MyTreeNode myTreeNode=(MyTreeNode)myTree.getLastSelectedPathComponent();
SuoluePane suolue=SuoluePane.getSuolue();
SuoluePane.myTreeNode=myTreeNode;
suolue.createButton();
//suolue.repaint();
}
/*
JScrollPane jscrollpane=null;
JTree myTree=null;
MyTreeNode selectedNode=null;
File selectedFile = null;
public static String temppath=System.getProperty("java.io.tmpdir")+File.separator+
"我的电脑";
public Left_treepane()
{
jinit();
//this.setPreferredSize(new Dimension(200,300));
//this.setMaximumSize(new Dimension(200,300));
}
public void jinit()
{
try {
computerIcon = new ImageIcon(Left_treepane.class.getResource("images/Computer.gif"));//我的电脑图标
driverIcon = new ImageIcon(Left_treepane.class.getResource("images/Driver.gif"));//驱动器图标
folderIcon = new ImageIcon(Left_treepane.class.getResource("images/Folder.gif"));//文件夹图标
fileIcon = new ImageIcon(Left_treepane.class.getResource("images/File.gif"));//文件图标
browseIcon = new ImageIcon(Left_treepane.class.getResource("images/Right.gif"));//浏览图标
} catch (Exception e) {
System.out.println("ERROR loading image files !");
}
myTree=new JTree(createTreeModel());
///myTree.setAlignmentX((float) 0.5);
myTree.setBackground(Color.WHITE);
// myTree.setScrollsOnExpand(true);
// myTree.setShowsRootHandles(false);
// myTree.addTreeExpansionListener(new
// Left_treepane_myTree_treeExpansionAdapter(this));
// myTree.addMouseListener(new Left_treepane_myTree_mouseAdapter(this));
myTree.addTreeWillExpandListener(new
Left_treepane_myTree_treeWillExpandAdapter(this));
myTree.setCellRenderer(new MyTreeRenderer());
myTree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
myTree.setSelectionRow(0);//树的当前选择为根目录
//myTree.setAlignmentX((float) 0.5);
//myTree.setShowsRootHandles(false);
// myTree.addTreeSelectionListener(new
// Left_treepane_myTree_treeSelectionAdapter(this));
jscrollpane=new JScrollPane(myTree);
this.setLayout(new GridLayout(1,1));
this.add(jscrollpane);
}
/**
* 创建树模型*/
/*
public DefaultTreeModel createTreeModel()
{
File mycomputer=new File(temppath);
try
{
mycomputer.mkdirs(); //创建文件夹
mycomputer.deleteOnExit(); //在虚拟机退出时删除创建的文件夹
}
catch(Exception e)
{
System.out.println("文件已存在或者不存在");
}
MyTreeNode rootTree=new MyTreeNode(mycomputer);
MyTreeNode parent;
File[] roots = MyUtility.getRoots();
// Remove A: drive from the initial list of drives, since whenever the
// JTree is repaint, it tries to read floppy drive A:\.
// for (int i = 0; i < roots.length; i++) {
int readfirst = 0;
if (roots[readfirst].getPath().toLowerCase().startsWith("a:")) {
readfirst = 1;
}
for (int i = readfirst; i < roots.length; i++) {
parent = new MyTreeNode(roots[i]);
parent.explore();
rootTree.add(parent);
}
// By default, use the first non-floppy disk here.
selectedFile = null;
selectedNode=rootTree;
return new DefaultTreeModel(rootTree);
}
void myTree_valueChanged(TreeSelectionEvent e) {
selectedNode = (MyTreeNode)
myTree.getLastSelectedPathComponent();
selectedFile = null;
// Refresh the address field.
if (selectedNode != null) {
File selectedDir = (File) selectedNode.getUserObject();
// Update the address text field and status bar.
}
// Refresh the file table.
// Revalidate the JScrollPane component for the changed JTable.
// Display the scrollbar if necessary.
}
void myTree_treeExpanded(TreeExpansionEvent e) {
DefaultTreeModel treeModel = (DefaultTreeModel) myTree.getModel();
TreePath newPath = new TreePath(treeModel.getPathToRoot(selectedNode));
myTree.setSelectionPath(newPath);
myTree.scrollPathToVisible(newPath);
}
void myTree_mouseClicked(MouseEvent e) {
// Enable both left click and right click selection. Left click selection is
// auto-enabled, and doesn't need to be enabled specifically.
TreePath curTreePath = myTree.getClosestPathForLocation(e.getX(),
e.getY());
myTree.clearSelection();
myTree.addSelectionPath(curTreePath);
}
void myTree_treeWillExpand(TreeExpansionEvent e) throws
ExpandVetoException {
TreePath path = e.getPath();
MyTreeNode selectedNode = (MyTreeNode) path.getLastPathComponent();
if (!selectedNode.isExplored()) {
selectedNode.explore();
}
}
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -