在我正在编写的程序中,我有一个 JTree 存储我自己设计的一些对象。我自己扩展了 DefaultTreeCellRenderer 并覆盖了 getTreeCellRendererComponent 以返回带有一些按钮和东西的 JPanel。我发现我添加的按钮不像按钮,这让人认为与组件的交互被树单元“窃取”了。(如果单击按钮,按钮周围的容器也会被单击,并且树对被单击有自己的响应。)
所以我的问题是:
如果我想要的是树的基本功能,加上一些按钮,我应该使用什么方法?
- 继续沿同一路线行驶;添加某种鼠标侦听器以手动将功能添加到按钮。
- 继续沿同一路线行驶;删除现有的鼠标侦听器并添加您自己的以实现正确的行为。
- 扩展或实现与您所做的稍有不同的类或接口 - 可能不是 DefaultMutableTreeNodes,也可能不是 DefaultTreeCellRenderer 等 - 使用现有的 XXXX 来做您想做的事情。
- 避免使用 JTree;自己做,没那么难。
我倾向于最后一个选项——我很有可能实际上并不想要树的折叠行为,所以我可能只是制作自己的结构。但是,即使我选择了那个选项,我也想知道我应该做什么。