该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
@SuppressWarnings("serial")
public class TreeEventFrame extends JFrame{
private JSplitPane splitPane;
private JPanel leftPanel;
private JPanel rightPanel;
private JTree tree;
private JTextArea textArea;
TreeEventFrame(){
setSize(500,300);
setLayout(new BorderLayout());
splitPane =new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
//1.左侧
DefaultMutableTreeNode rootNode=new DefaultMutableTreeNode("学科");
DefaultMutableTreeNode level_1Node=new DefaultMutableTreeNode("数学");
DefaultMutableTreeNode level_2Node=new DefaultMutableTreeNode("物理");
rootNode.add(level_1Node);
rootNode.add(level_2Node);
DefaultMutableTreeNode level_11Node=new DefaultMutableTreeNode("小学数学");
DefaultMutableTreeNode level_12Node=new DefaultMutableTreeNode("初中数学");
DefaultMutableTreeNode level_13Node=new DefaultMutableTreeNode("高中数学");
level_1Node.add(level_11Node);
level_1Node.add(level_12Node);
level_1Node.add(level_13Node);
DefaultMutableTreeNode level_21Node=new DefaultMutableTreeNode("初中物理");
DefaultMutableTreeNode level_22Node=new DefaultMutableTreeNode("高中物理");
DefaultMutableTreeNode level_23Node=new DefaultMutableTreeNode("大学物理");
level_2Node.add(level_21Node);
level_2Node.add(level_22Node);
level_2Node.add(level_23Node);
//面板设置
leftPanel=new JPanel();
leftPanel.setLayout(new BorderLayout());
final JScrollPane leftScrollPane=new JScrollPane();
DefaultTreeModel treeModel=new DefaultTreeModel(rootNode);
tree=new JTree(treeModel);
leftScrollPane.setViewportView(tree);
leftPanel.add(leftScrollPane,BorderLayout.CENTER);
splitPane.setDividerLocation(120);
splitPane.setLeftComponent(leftPanel);
getContentPane().add(splitPane,BorderLayout.CENTER);
//右侧
final JScrollPane rightScrollPane=new JScrollPane();
rightPanel=new JPanel();
rightPanel.setLayout(new BorderLayout());
textArea=new JTextArea();
rightPanel.add(textArea,BorderLayout.CENTER);
rightScrollPane.setViewportView(rightPanel);
splitPane.setRightComponent(rightScrollPane);
tree.addTreeSelectionListener(new TreeSelectionListener(){
public void valueChanged(TreeSelectionEvent arg0){
//如果不被选,则不执行,反之,执行
if(tree.isSelectionEmpty()){
//获得所选节点的路径名
TreePath[] selectPaths=tree.getSelectionPaths();
for(int i=0;i
Object[] paths=selectPaths[i].getPath();
for(int j=0;j
DefaultMutableTreeNode node=(DefaultMutableTreeNode)paths[j];
textArea.append(node.getUserObject()+((j==paths.length-1)?"":"->"));
textArea.append("\n");
}
}
}
}
});
}
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
@Override
public void run(){
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e){
TreeEventFrame frame=new TreeEventFrame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
});
}
}