带有复选框的 JTree

2022-09-04 08:11:07

我需要将复选框添加到JTree。自定义 TreeCellRenderer/TreeCellEditor 似乎是正确的方法。到目前为止,我在这个网页中使用了CheckBoxNodeRenderer方法。除了两件事之外,它工作正常:

  1. 复选框上方+下方有额外的空格;我想让它与常规JTree保持一样。
  2. 我想区分单击复选框本身(应该尝试切换复选框)和单击与复选框关联的文本(这应该允许事件侦听器将其解释为单击相应的树节点并采取任何适当的操作)

有没有办法做这些事情?我四处寻找带有复选框的JTrees,找不到太多。JIDE看起来不错,但在这种情况下,我需要使用免费的开源软件(GPL不行,LGPL还可以)。(或创建我自己的复选框树)


答案 1

我知道这个问题已经得到了回答,但我只想澄清一些要点:

1)JIDE Common Layer是双重许可的(GPL有类路径例外和免费商业许可)。这意味着您可以使用公共层项目,而不会出现任何许可问题。请检查以下链接以确认:http://www.jidesoft.com/products/oss.htm。Common Layer包括一个可检查的JTree(com.jidesoft.swing.CheckBoxTree)的实现。

2)有一个2005年的博客,来自大师本人,Santhosh Kumar,他在其中解释了如何用你提到的要求复选框实现JTree:http://www.jroller.com/santhosh/entry/jtree_with_checkboxes。在我看来,值得一读。


答案 2

至于#2,你可以让一个面板成为编辑器/渲染器,并在复选框旁边添加一个标签 - 标签将是文本,复选框不会添加文本。


推荐