我需要重写一些遗留的JTree代码,以便更轻松地实现即将推出的功能。此代码为每个节点创建三个图标(请参见屏幕截图,红色框中),点击后执行某些操作。
这些图标包含在由自定义TreeRenderer创建的JPanel中。
当前代码计算像素以确定单击了哪个图标,即
if (x >= 0 && x <= 9) {
if (y >= 4 && y <= 12) {
gpxObj.setVisible(!gpxObj.isVisible());
}
} else if (x >= 13 && x <= 19) {
...
我试图通过将这些图标实现为JButton
并且每个ActionLister()
来替换此代码,但看起来鼠标点击被JTree
拦截并且永远不会到达按钮ActionListener()
。
如何实现此功能?我是否需要实施TreeCellEditor
或类似的?
提前感谢。