package test;
import javax.swing.tree.TreeSelectionModel;
import java.awt.Container;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.JSplitPane;
import java.io.IOException;
public class TreeDemo07 implements TreeSelectionListener{
JEditorPane editorPane;
public TreeDemo07(){
JFrame frame = new JFrame("TreeDemo07");
Container contentPane = frame.getContentPane();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("資源管理器");
DefaultMutableTreeNode node = new DefaultMutableTreeNode("TreeDemo1.java");
root.add(node);
node = new DefaultMutableTreeNode("TreeDemo2.java");
root.add(node);
node = new DefaultMutableTreeNode("TreeDemo3.java");
root.add(node);
node = new DefaultMutableTreeNode("TreeDemo4.java");
root.add(node);
JTree tree = new JTree(root);
//設置Tree的選擇模式為一次只能選擇一個節點
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
//監聽是否有SelectionEvent事件
tree.addTreeSelectionListener(this);
JScrollPane scrollPane1 = new JScrollPane(tree);
editorPane = new JEditorPane();
JScrollPane scrollPane2 = new JScrollPane(editorPane);
//左邊是放有JTree的JScrollPane,右邊是放有EditorPane的JScrollPane
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
true,scrollPane1,scrollPane2);
contentPane.add(splitPane);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//實現TreeSelectionListener的valueChanged方法
public void valueChanged(TreeSelectionEvent e){
JTree tree = (JTree)e.getSource();
//利用getLastSelectedPathComponent方法取得當前選擇的節點
DefaultMutableTreeNode selectionNode =
(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
String nodeName = selectionNode.toString();
if(selectionNode.isLeaf()){//如果被選中的節點是樹葉節點,則顯示其文本內容,否則什么也不做
//System.getProperty("user.dir")可以取得目前的工作路徑
//System.getProperty("file.separator")可以取得當前系統默認的文件分割符
String filePath = "file:" + System.getProperty("user.dir") +
System.getProperty("file.separator") + nodeName;
try{
//利用JEditorPane的setPage方法可以將文件內容顯示在editorPane中
editorPane.setPage(filePath);
}
catch (IOException e1)//如果文件路徑錯誤,則會產生IOException
{
System.out.println("找不到文件:" + filePath);
e1.printStackTrace();
}
}
}
public static void main(String[] args){
new TreeDemo07();
}
}