1、获取当前选中子节点
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
2、(DefaultTreeModel)tree.getModel() //添加删除修改树节点时,先将树转换为模型
public void actionPerformed(ActionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();// 获取选择的当前节点
if (e.getSource() == addItem) {
// 为node添加子节点到所有子节点的最后
((DefaultTreeModel) tree.getModel()).insertNodeInto(
new DefaultMutableTreeNode("Test"), node, node
.getChildCount());
tree.expandPath(tree.getSelectionPath());
} else if (e.getSource() == delItem) {
if (node.isRoot()) {
return;
}
// 首先得到模型,转换为DefaultTreeModel,获取到树模型,从父节点上移除该子节点
((DefaultTreeModel) tree.getModel()).removeNodeFromParent(node);
} else if (e.getSource() == editItem) {
tree.startEditingAtPath(tree.getSelectionPath());//不太灵,不能保存
}
}
3、设置树形的节点选择模式
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);
4、获取每一级节点,分别做处理
valueChanged()是实现了TreeSelectionListener的方法
@Override
public void valueChanged(TreeSelectionEvent e) {
// 获取选择的节点
DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
if (node.getLevel() == 0) {
// 显示提示信息
JOptionPane.showMessageDialog(null, node.getUserObject() + ": 共"+ node.getChildCount() + "个国家");
} else if (node.getLevel() == 1) {
// 显示提示信息
JOptionPane.showMessageDialog(null, node.getUserObject() + ": 共"+ node.getChildCount() + "名名将");
} else if (node.getLevel() == 2) {
// 显示提示信息
JOptionPane.showMessageDialog(null, node.getParent() + "名将: "+ node.getUserObject());
}
}
5、window不同的风格通过UIManager.setLookAndFeel(lookAndFeel);来设置。
lookAndFeel的不同种类有空再研究