快速业务通道

一个简单的CheckBox Tree实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

一个简单的CheckBox Tree实现

时间:2011-01-19 BlogJava Sha Jiang

CheckBox Tree是一个十分常用的UI组件,它能使用户方便地按特定规则勾选树中的节点。本文实现了一种简单的Checking规则:当勾选了某节点后,该节点的所有下级节点全部被勾选;当取消勾选某节点后,该节点的所有下级节点全部被取消勾选。(2009.08.05最后更新)

实现CheckBox Tree的常用方法,就是使用JCheckBox作为JTree的TreeCellRendrer,并且需要实现特定的Checking规则来勾选/取消勾选CheckBox。

1. 树节点

DefaultMutableTreeNode是最常用的TreeNode实现,此处我们将扩展这一实现--CheckBoxTreeNode,增加一个属性isChecked,用于标识该节点是否要被勾选上。该类的完整代码如下所示:

public class CheckBoxTreeNode extends DefaultMutableTreeNode {         private static final long serialVersionUID = 3195314943599939279L;         private boolean isChecked = false;         public CheckBoxTreeNode(Object userObject) {                 super(userObject);         }         public boolean isChecked() {                 return isChecked;         }         public void setChecked(boolean isChecked) {                 this.isChecked = isChecked;         } }

2. 渲染器

如本文开头所述,我们将使用JCheckBox作为树节点展现形式的渲染器,同时确定对节点进行勾选或取消勾选的规则。CheckBoxTreeCellRenderer本身即是一个JCheckBox,那么在实现getTreeCellRendererComponent方法时,只简单地返回它自己的实例即可,而对于勾选或取消勾选的条件,则由CheckBoxTreeNode中的isChecked属性来确定,完整的代码如下所示:

public class CheckBoxTreeCellRenderer extends JCheckBox implements TreeCellRenderer {         private static final long serialVersionUID = -6432020851855339311L;         public CheckBoxTreeCellRenderer() {                 setOpaque(false);         }         public Component getTreeCellRendererComponent(JTree tree, Object value,                         boolean selected, boolean expanded, boolean leaf, int row,                         boolean hasFocus) {                 CheckBoxTreeNode node = ((CheckBoxTreeNode) value); // 获取树节点对象。                 setText(node.toString()); // 设置CheckBox所展示的文本。                 // 当树节点被设置为勾选时,则该节点对应的CheckBox被勾选上;否则,取消勾选。                 if (node.isChecked()) {                         setSelected(true);                         setForeground(Color.BLUE);                 } else {                         setSelected(false);                         setForeground(tree.getForeground());                 }                 return this;         } }

匯倖酒汽議CheckBox Tree糞?(2)

扮寂:2011-01-19 BlogJava Sha Jiang

3. 峯

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号