JTree 添加 , 删除, 修改
- package com.swing.demo;
- import java.awt.BorderLayout;
- import java.awt.Container;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import javax.swing.CellEditor;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import javax.swing.JTree;
- import javax.swing.event.CellEditorListener;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.TreeModelEvent;
- import javax.swing.event.TreeModelListener;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
- import javax.swing.tree.TreeNode;
- import javax.swing.tree.TreePath;
- /**
- * tree node 添加 , 删除, 修改
- *
- * @author Administrator
- *
- */
- public class JTreeTest implements ActionListener, TreeModelListener {
- private JLabel statusLabel = null;
- private JTree tree = null;
- private DefaultTreeModel treeModel = null;
- private String oldNodeName = null;
- public JTreeTest() {
- JFrame frame = new JFrame("JTreeTest 窗体");
- Container contentPane = frame.getContentPane();
- DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");
- tree = new JTree(root);
- tree.addMouseListener(new MyTreeMouseListener());
- treeModel = (DefaultTreeModel) tree.getModel();
- treeModel.addTreeModelListener(this);
- tree.setEditable(true);
- tree.getCellEditor().addCellEditorListener(
- new MyTreeCellEditorListener());
- JScrollPane scrollPane = new JScrollPane();
- scrollPane.setViewportView(tree);
- JPanel toolBarPanel = new JPanel();
- JButton b = new JButton("新增节点");
- b.addActionListener(this);
- toolBarPanel.add(b);
- b = new JButton("删除节点");
- b.addActionListener(this);
- toolBarPanel.add(b);
- b = new JButton("清除所有节点");
- b.addActionListener(this);
- toolBarPanel.add(b);
- statusLabel = new JLabel("Action");
- contentPane.add(toolBarPanel, BorderLayout.NORTH);
- contentPane.add(scrollPane, BorderLayout.CENTER);
- contentPane.add(statusLabel, BorderLayout.SOUTH);
- frame.pack();
- frame.setVisible(true);
- frame.requestFocus();
- frame.setSize(400, 300);
- frame.setLocationRelativeTo(null);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- // 本方法运行新增、删除、清除所有节点的程序代码.
- public void actionPerformed(ActionEvent ae) {
- if (ae.getActionCommand().equals("新增节点")) {
- DefaultMutableTreeNode parentNode = null;
- DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新节点");
- newNode.setAllowsChildren(true);
- TreePath parentPath = tree.getSelectionPath();
- if (parentPath == null) {
- return;
- }
- // 取得新节点的父节点
- parentNode = (DefaultMutableTreeNode) (parentPath
- .getLastPathComponent());
- // 由DefaultTreeModel的insertNodeInto()方法增加新节点
- treeModel.insertNodeInto(newNode, parentNode,
- parentNode.getChildCount());
- // tree的scrollPathToVisible()方法在使Tree会自动展开文件夹以便显示所加入的新节点。若没加这行则加入的新节点
- // 会被 包在文件夹中,你必须自行展开文件夹才看得到。
- tree.scrollPathToVisible(new TreePath(newNode.getPath()));
- tree.setSelectionPath(new TreePath(newNode.getPath()));
- statusLabel.setText("新增节点成功");
- }
- if (ae.getActionCommand().equals("删除节点")) {
- TreePath treepath = tree.getSelectionPath();
- if (treepath != null) {
- // 下面两行取得选取节点的父节点.
- DefaultMutableTreeNode selectionNode = (DefaultMutableTreeNode) treepath
- .getLastPathComponent();
- TreeNode parent = (TreeNode) selectionNode.getParent();
- if (parent != null) {
- // 由DefaultTreeModel的removeNodeFromParent()方法删除节点,包含它的子节点。
- treeModel.removeNodeFromParent(selectionNode);
- statusLabel.setText("删除节点成功");
- }
- }
- }
- if (ae.getActionCommand().equals("清除所有节点")) {
- // 下面一行,由DefaultTreeModel的getRoot()方法取得根节点.
- DefaultMutableTreeNode rootNode = (DefaultMutableTreeNode) treeModel
- .getRoot();
- // 下面一行删除所有子节点.
- rootNode.removeAllChildren();
- // 删除完后务必运行DefaultTreeModel的reload()操作,整个Tree的节点才会真正被删除.
- treeModel.reload();
- statusLabel.setText("清除所有节点成功");
- }
- }
- public void treeNodesChanged(TreeModelEvent e) {
- TreePath treePath = e.getTreePath();
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath
- .getLastPathComponent();
- try {
- int[] index = e.getChildIndices();
- node = (DefaultMutableTreeNode) node.getChildAt(index[0]);
- } catch (NullPointerException exc) {
- }
- statusLabel.setText(oldNodeName + "更改数据为:"
- + (String) node.getUserObject());
- }
- public static void main(String[] args) {
- new JTreeTest();
- }
- class MyTreeMouseListener extends MouseAdapter {
- public void mousePressed(MouseEvent e) {
- try {
- JTree tree = (JTree) e.getSource();
- int rowLocation = tree.getRowForLocation(e.getX(), e.getY());
- TreePath treepath = tree.getPathForRow(rowLocation);
- TreeNode treenode = (TreeNode) treepath.getLastPathComponent();
- oldNodeName = treenode.toString();
- } catch (NullPointerException ne) {
- }
- }
- }
- class MyTreeCellEditorListener implements CellEditorListener {
- public void editingStopped(ChangeEvent e) {
- Object selectnode = tree.getLastSelectedPathComponent();
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectnode;
- CellEditor cellEditor = (CellEditor) e.getSource();
- String newName = (String) cellEditor.getCellEditorValue();
- node.setUserObject(newName);
- DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
- model.nodeStructureChanged(node);
- }
- public void editingCanceled(ChangeEvent e) {
- editingStopped(e);
- }
- }
- @Override
- public void treeNodesInserted(TreeModelEvent e) {
- }
- @Override
- public void treeNodesRemoved(TreeModelEvent e) {
- }
- @Override
- public void treeStructureChanged(TreeModelEvent e) {
- }
- }
JTree 添加 , 删除, 修改的更多相关文章
- SQL语句添加删除修改字段及一些表与字段的基本操作
用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200)2.删除字段 ALTER TABLE table_NA ...
- Entity framework 绑定到Datagridview的添加删除修改
Entity framework 绑定到Datagridview的添加删除修改 using System; using System.Collections.Generic; using System ...
- JavaScript学习 - 基础(八) - DOM 节点 添加/删除/修改/属性值操作
html代码: <!--添加/删除/修改 --> <div id="a1"> <button id="a2" onclick=&q ...
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table_NAME DROP CO ...
- SQL语句添加删除修改字段[sql server 2000/2005]
用SQL语句添加删除修改字段1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME ...
- SQL语句添加删除修改字段
用SQL语句添加删除修改字段1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME ...
- Dom4j 操作, 节点查找 添加 删除 修改 。。。xPath
转: Dom4j 操作, 节点查找 添加 删除 修改 ...xPath 2013年11月28日 10:48:59 今晚打酱油8 阅读数:8506更多 个人分类: JavaWeb 版权声明:本文为博 ...
- dir(dict)|字典的创建-添加-删除-修改-判断存在-取值等相关操作
dir(dict) ####字典操作:创建-添加-删除-修改-判断存在-取值 #(一)创建字典: {} .等号. zip(). [(),()] #1.创建空字典 dict0 = {} #2.等号创建 ...
- sqlserverdatasouce控件如何让添加删除修改自动化
对于sqlserverdatasouce控件,添加插入修改和删除命令,可以自动删除修改更新数据,不需要编写一行代码,但是有时更新失败,原因在于选中了[开放式并发],这个选中,如果该表与其他的数据表关联 ...
随机推荐
- Oracle表字段类型更改的一个经验
先前表中ID字段类型是用序列,由于安全问题,需要处理水平权限的漏洞,虽然使用加密也可以处理,为了更方便,需要将字段类型改为Guid,如果表中已经有数据,更改起来不是很方便,对于基础数据表,这里提供一个 ...
- Controller、Service、Dao进行Junit单元
原文链接:http://blog.csdn.net/u013041642/article/details/71430293 Spring对Controller.Service.Dao进行Junit单元 ...
- TensorFlow最佳实践样例
以下代码摘自<Tensor Flow:实战Google深度学习框架> 本套代码是在 http://www.cnblogs.com/shanlizi/p/9033330.html 基础上进行 ...
- 第一篇:打造专属开发工具Eclipse篇
第一篇:打造专属开发工具Eclipse篇 eclipse 优化 1.动画很酷,但如果可以的话,我总是在所有的工具中禁用动画.所以classic或者window classic主题是我最常用的主题 , ...
- Kafka 0.8翻译官网精华.md
1主要的设计元素 Kafka之所以和其它绝大多数信息系统不同,是因为下面这几个为数不多的比较重要的设计决策: Kafka在设计之时为就将持久化消息作为通常的使用情况进行了考虑. 主要的设计约束是吞吐量 ...
- vue 使用v-cloak让在页面加载时不显示{{}}花括号
官方说法: 这个指令保持在元素上直到关联实例结束编译. 和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准 ...
- CSS 设置网页中选中文字的背景色
在样式文件中增加如下代码: ::selection { background: hsla(5, 92%, 76%, 0.8); color: #fff;}
- dede调用多级导航的方法
<div id="navWrapper"> <div class="content"> <ul class="nav m ...
- html5 canvas 多个填充渐变形状
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [转载]Remote Desktop Manager 9.0.10.0 Enterprise 附企业版注册码 (强大的远程控制软件)
http://www.52xiazai.net/pcsoft/network/yuanchen/20131206/2429.html