publicclassCheckBoxTreeextendsJTree {privatestaticfinallongserialVersionUID=-217950037507321241L;publicCheckBoxTree(TreeModel newModel) {super(newModel);
addCheckingListener();
}privatevoidaddCheckingListener() {
addMouseListener(newMouseAdapter() {
@OverridepublicvoidmousePressed(MouseEvent e) {introw=getRowForLocation(e.getX(), e.getY());
TreePath treePath=getPathForRow(row);if(treePath==null) {return;
}
CheckBoxTreeNode node=((CheckBoxTreeNode) treePath.getLastPathComponent());booleanchecking=!node.isChecked();//如果该节点已被勾选上,则此次将取消勾选;反之,亦反。checkNode(node, checking);
repaint();//重绘整棵树。}//递归地勾选或取消勾选指定节点及其所有下级节点的CheckBox。privatevoidcheckNode(CheckBoxTreeNode node,booleanchecking) {
node.setChecked(checking);if(!node.isLeaf()) {
Enumerationchildren=node.children();while(children.hasMoreElements()) {
checkNode(children.nextElement(), checking);
}
}
}
});
}
}
这个博客介绍了如何在Java Swing中创建一个可复用的CheckBoxTree组件。通过监听鼠标点击事件,该组件能够实现节点的勾选和取消勾选功能,并能递归地影响其所有子节点的状态。此功能对于构建具有交互式树形结构的用户界面非常有用。

571

被折叠的 条评论
为什么被折叠?



