📄 treeselectiondemo.java
字号:
// 例6.7.2 TreeSelectionDemo.java
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class TreeSelectionDemo implements TreeSelectionListener
{
JFrame frame;
JPanel panel;
JLabel label;
JTextArea textArea;
JScrollPane scrollPane1,scrollPane2;
public TreeSelectionDemo()
{
frame = new JFrame("TreeSelectionDemo");
Container contentPane = frame.getContentPane();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Java技术文档");
DefaultMutableTreeNode branch1 = new DefaultMutableTreeNode("J2SE");
DefaultMutableTreeNode branch2 = new DefaultMutableTreeNode("J2EE");
DefaultMutableTreeNode branch3 = new DefaultMutableTreeNode("J2ME");
root.add(branch1);root.add(branch2);root.add(branch3);
branch1.add(new DefaultMutableTreeNode("面向对象基础知识"));
branch1.add(new DefaultMutableTreeNode("图形用户界面"));
branch1.add(new DefaultMutableTreeNode("网络与通信"));
branch1.add(new DefaultMutableTreeNode("文件系统"));
branch1.add(new DefaultMutableTreeNode("数据库应用"));
JTree tree = new JTree(root);
tree.addTreeSelectionListener(this); // 为tree对象注册监听器
scrollPane1 = new JScrollPane(tree);
label = new JLabel("您选择了:");
textArea = new JTextArea(); // 创建一个文本域对象
textArea.setLineWrap(true); // 设置允许换行
scrollPane2 = new JScrollPane(textArea);
panel = new JPanel(); // 创建一个面板容器对象
// 将JPanel对象的布局管理器设置为BoxLayout,并以Y轴作为轴方向
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
panel.add(label);panel.add(scrollPane2);
contentPane.add(scrollPane1,BorderLayout.WEST);
contentPane.add(panel,BorderLayout.CENTER);
frame.setSize(300,200);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
// 处理来自树节点状态改变的事件
public void valueChanged(TreeSelectionEvent e)
{
JTree tree = (JTree)e.getSource(); // 获得事件源所在对象
TreePath treepath=tree.getSelectionPath(); // 获得当前选择节点的路径
DefaultMutableTreeNode selectionNode =(DefaultMutableTreeNode)tree.g
etLastSelectedPathComponent(); //获得当前选取的节点对象
String nodePath = treepath.toString();
String nodeName = selectionNode.toString();
//判断是否为树叶节点,若是则给与说明,否则仅给出路径显示
if (selectionNode.isLeaf())
{
textArea.setText(nodePath + "\n其中" + nodeName + "是叶子节点");
}
else textArea.setText(nodePath);
}
public static void main(String[] args)
{
new TreeSelectionDemo();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -