2019独角兽企业重金招聘Python工程师标准>>>

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;class FilteredTree {private class PlainBelliedSneech {public String toString() {return "Plain Bellied Sneech";}}private class StarBelliedSneech {public String toString() {return "Star Bellied Sneech";}}private class FilteredTreeModel extends DefaultTreeModel {private boolean mShowStarBelliedSneeches = true;private DefaultMutableTreeNode mRoot;FilteredTreeModel(DefaultMutableTreeNode root) {super(root);mRoot = root;}public Object getChild(Object parent, int index) {DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent;if (mShowStarBelliedSneeches)return node.getChildAt(index);int pos = 0;for (int i = 0, cnt = 0; i < node.getChildCount(); i++) {if (((DefaultMutableTreeNode) node.getChildAt(i)).getUserObject() instanceof PlainBelliedSneech) {if (cnt++ == index) {pos = i;break;}}}return node.getChildAt(pos);}public int getChildCount(Object parent) {DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent;if (mShowStarBelliedSneeches)return node.getChildCount();int childCount = 0;Enumeration children = node.children();while (children.hasMoreElements()) {if (((DefaultMutableTreeNode) children.nextElement()).getUserObject() instanceof PlainBelliedSneech)childCount++;}return childCount;}public boolean getShowStarBelliedSneeches() {return mShowStarBelliedSneeches;}public void setShowStarBelliedSneeches(boolean showStarBelliedSneeches) {if (showStarBelliedSneeches != mShowStarBelliedSneeches) {mShowStarBelliedSneeches = showStarBelliedSneeches;Object[] path = { mRoot };int[] childIndices = new int[root.getChildCount()];Object[] children = new Object[root.getChildCount()];for (int i = 0; i < root.getChildCount(); i++) {childIndices[i] = i;children[i] = root.getChildAt(i);}fireTreeStructureChanged(this, path, childIndices, children);}}}private FilteredTree() {final DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");DefaultMutableTreeNode parent;DefaultMutableTreeNode child;for (int i = 0; i < 2; i++) {parent = new DefaultMutableTreeNode(new PlainBelliedSneech());root.add(parent);for (int j = 0; j < 2; j++) {child = new DefaultMutableTreeNode(new StarBelliedSneech());parent.add(child);for (int k = 0; k < 2; k++)child.add(new DefaultMutableTreeNode(new PlainBelliedSneech()));}for (int j = 0; j < 2; j++)parent.add(new DefaultMutableTreeNode(new PlainBelliedSneech()));parent = new DefaultMutableTreeNode(new StarBelliedSneech());root.add(parent);for (int j = 0; j < 2; j++) {child = new DefaultMutableTreeNode(new PlainBelliedSneech());parent.add(child);for (int k = 0; k < 2; k++)child.add(new DefaultMutableTreeNode(new StarBelliedSneech()));}for (int j = 0; j < 2; j++)parent.add(new DefaultMutableTreeNode(new StarBelliedSneech()));}final FilteredTreeModel model = new FilteredTreeModel(root);JTree tree = new JTree(model);tree.setShowsRootHandles(true);tree.putClientProperty("JTree.lineStyle", "Angled");tree.setRootVisible(false);JScrollPane sp = new JScrollPane(tree);sp.setPreferredSize(new Dimension(200, 400));final JCheckBox check = new JCheckBox("Show Star Bellied Sneeches");check.setSelected(model.getShowStarBelliedSneeches());check.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {model.setShowStarBelliedSneeches(check.isSelected());}});JPanel panel = new JPanel(new BorderLayout());panel.add(check, BorderLayout.NORTH);panel.add(sp, BorderLayout.CENTER);JOptionPane.showOptionDialog(null, panel, "Sneeches on Beeches", JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE, null, new String[0], null);System.exit(0);}public static void main(String[] argv) {new FilteredTree();}
}

转载于:https://my.oschina.net/fbliujia/blog/73515

显示隐藏JTree节点相关推荐

  1. 隐藏html文本节点,javascript-D3-仅显示/隐藏单击节点的文本

    我试图单击显示/隐藏D3中节点的文本.我尝试使用以下代码: var node = svg.selectAll(".node") .data(json.nodes) (...) no ...

  2. flutter控制显示隐藏_leaflet中如何通过透明度控制layerGroup的显示隐藏

    最近在leaflet开发过程中,遇到地图数据需要按时序播放的需求,处理思路是将每个时间节点的要素添加到layerGroup中,然后通过切换layerGroup的显示隐藏来实现效果.翻看leaflet的 ...

  3. jQuery学习笔记系列(一)——入口函数,jQuery对象和DOM对象,jQuery选择器、样式操作、效果(显示隐藏、滑入滑出、淡入淡出、自定义动画、停止动画队列)

    day01 - jQuery 学习目标: 能够说出什么是 jQuery 能够说出 jQuery 的优点 能够简单使用 jQuery 能够说出 DOM 对象和 jQuery 对象的区别 能够写出常用的 ...

  4. ztree隐藏指定节点后面的(重命名和删除)图标

    在想要隐藏的节点(节点)上添加两个属性noRemoveBtn,noEditBtn;值为true;如:只隐藏父节点后面图标 function addBtnProperty(nodes){$.each(n ...

  5. react 显示隐藏组件的方法_10种React组件之间通信的方法

    来源 | https://segmentfault.com/a/1190000023585646 这两天被临时抽调到别的项目组去做一个小项目的迭代.这个项目前端是用React,只是个小型项目所以并没有 ...

  6. UE4-(蓝图)第十五课平视显示器(程序设置HUD显示内容并控制HUD显示隐藏)

    实现从外部设置Text显示文本,要用到绑定功能. 一.从外部设置Text显示文本 1.在HUDWidget1的控件蓝图编辑器中,选中放置的Text,在细节中找到Content下的Text属性,右侧显示 ...

  7. 本节作业之显示不同问候语、显示密码、关闭二维码、循环精灵图背景、显示隐藏文本框内容、密码框格式提示错误、京东关闭广告、新浪下拉菜单、开关灯、换肤、表格隔行变色、表单取消全选、tab栏切换、发布删除留言

    本节作业之显示不同问候语.显示密码.关闭二维码.循环精灵图背景.显示隐藏文本框内容.密码框格式提示错误.京东关闭广告.新浪下拉菜单.开关灯.换肤.表格隔行变色.表单取消全选.tab栏切换.发布删除留言 ...

  8. Java读取txt文件中格式化信息,显示到JTree中

    1.效果 1.1 读取格式化信息  01 代表一级节点, 0101 表示01下的二级节点,其他以此类推 1.2 显示 2.操作步骤 2.1 思考 如何能够做到能够做到,在向txt文件中追加信息时,不论 ...

  9. css实现显示隐藏的5种方法

    css实现显示隐藏是在写前端时经常遇见的问题,我根据自己的经验以及网上的方法,一共总结了5种.下面我分析一下它们各自的特点. 1. dispalay:none 这是最简单也是最容易想到的方法. .hi ...

最新文章

  1. WCF - Session 剖析
  2. Spring Cloud构建微服务架构:服务消费(基础)
  3. 安装Google Object Detection API
  4. poj 2371 Questions and answers
  5. 【数电】(二) 基本逻辑运算与逻辑门电路
  6. 大数据对人们的好处_大数据有什么作用和优势
  7. 22.4. IP Address
  8. Maven的Pom文件 ( Eclipse中创建Maven工程, 使用注意点,DevOps相关)
  9. springboot 注解_springBoot注解大全
  10. netcat,nmap常用例子
  11. 关于四川2019ACM省赛热身赛B题的一个证明
  12. 抽象代数之欧拉定理的群论的简短证明
  13. 高通Android camera驱动框架
  14. PuTTY用户手册(一)
  15. iOS不能显示英文音标问题
  16. 高中计算机学业水平考试教程,高中学业水平考试信息技术操作题步骤
  17. 深度学习与卷积神经网络
  18. 孔雀东南飞用mysql存储_孔雀东南飞的故事简介800字(孔雀东南飞主要内容介绍)...
  19. java打印长方形、平行四边形、三角形、菱形
  20. 验证邮箱地址和手机号码

热门文章

  1. ReactNative 常见红屏黄屏及终端报错
  2. js if for 详解 获取元素方式 及一些js 基础知识
  3. Gradle Build速度加快终极方法(android studio)
  4. 学习ccna,ccnp中如何提高英语问题
  5. 洛谷 题解 P4955 【[USACO14JAN]Cross Country Skiing 越野滑雪】
  6. 智能机浏览器版本信息获取
  7. SQL SERVER数据库多条件查询
  8. 关于玻璃体捐献的想法
  9. gitee传入公钥以后每次push依然需要输入密码
  10. leetcode : 基础技巧