⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treedemo7.java

📁 详细介绍JTree两个常用的事件与处理,分别是TreeModeEvent与TreeSelectionEvent.
💻 JAVA
字号:
/**10-7-2:处理TreeSelectionEvent事件:
    当我们在JTree上点选任何一个节点,都会触发TreeSelectionEvent事件,如果我们要处理
这样的事件,必须实作TreeSelectionListener界面,此界面只定义了一个方法,那就是
valueChanged()方法。
    TreeSelectionEvent最常用在处理显示节点的内容,例如你在文件图标中点两下就可以
看到文件的内容。在JTree中选择节点的方式共有3种,这3种情况跟选择JList上的项目是
一模一样的,分别是:
1、DISCONTIGUOUS_TREE_SELECTION:可作单一选择,连续点选择(按住[Shift]键),
不连续选择多个节点(按住[Ctrl]键),这是java默认值.
2、CONTINUOUS_TREE_SELECTION:按住[Shift]键,可对某一连续的节点区间作选取。
3、SINGLE_TREE_SELECTION:一次只能选一个节点。
    你可以自行实作TreeSelectionModel制作作更复杂的选择方式,但通常是没有必要的
,因为java提供了默认的选择模式类供我们使用,那就是DefaultTreeSelectionModel,利用这个类我们可以很方便的设置上面3种选择模式。
  下面这个范例,当用户点选了一个文件名时,就会将文件的内容显示出来。
*/
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;


public class TreeDemo7 implements TreeSelectionListener
{
JEditorPane editorPane;

public TreeDemo7()
{
JFrame f = new JFrame("TreeDemo");
Container contentPane = f.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);
//检查是否有TreeSelectionEvent事件。
tree.addTreeSelectionListener(this);

//下面五行,JSplitPane中,左边是放含有JTree的JScrollPane,右边是放JEditorPane.
JScrollPane scrollPane1 = new JScrollPane(tree);
editorPane = new JEditorPane();
JScrollPane scrollPane2 = new JScrollPane(editorPane);
JSplitPane splitPane = new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT,true, scrollPane1, scrollPane2);

contentPane.add(splitPane);
f.pack();
f.setVisible(true);

f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
//本方法实作valueChanged()方法
public void valueChanged(TreeSelectionEvent e)
{
JTree tree = (JTree) e.getSource(); 
//利用JTree的getLastSelectedPathComponent()方法取得目前选取的节点.
DefaultMutableTreeNode selectionNode =(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();

String nodeName = selectionNode.toString();

//判断是否为树叶节点,若是则显示文件内容,若不是则不做任何事。
if (selectionNode.isLeaf()) 
{
/*取得文件的位置路径,System.getProperty("user.dir")可以取得目前工作的路径,
*System.getProperty("file.separator")是取得文件分隔符,例如在window环境的
*文件分陋符是"\",而Unix环境的文件分隔符刚好相反,是"/".利用System.getProperty()
*方法你可以取得下列的信息:
java.version 显示java版本
java.endor 显示java制造商
java.endor.url 显示java制造商URL
java.home 显示java的安装路径
java.class.version 显示java类版本
java.class.path 显示java classpath
os.name 显示操作系统名称
os.arch 显示操作系统结构,如x86
os.version 显示操作系统版本
file.separator 取得文件分隔符
path.separator 取得路径分隔符,如Unix是以“:”表示
line.separator 取得换行符号,如Unix是以"\n"表示
user.name 取得用户名称
user.home 取得用户家目录(home directory),如Windows中Administrator的家目
录为c:\Documents and Settings\Administrator
user.dir 取得用户目前的工作目录.
*/
String filepath = "file:"+System.getProperty("user.dir") +
       System.getProperty("file.separator") +nodeName;

try {
//利用JEditorPane的setPage()方法将文件内容显示在editorPane中。若文件路径错误,则会产生IOException.
   editorPane.setPage(filepath);
} catch(IOException ex) {
   System.out.println("找不到此文件");
}
}
}

public static void main(String[] args) {

new TreeDemo7(); 
}
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -