package examples.tree; import javax.swing.*; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class CheckBoxTreeNodeSelectionListener extends MouseAdapter { @Override public void mouseClicked(MouseEvent event) { if (event.getClickCount() == 2 &&event.getButton() == MouseEvent.BUTTON1) { // 处理鼠标双击 System.out.println("222222222222"); } else if (event.getClickCount() == 1&&event.getButton() == MouseEvent.BUTTON1) { JTree tree = (JTree) event.getSource(); int x = event.getX(); int y = event.getY(); int row = tree.getRowForLocation(x, y); TreePath path = tree.getPathForRow(row); if (path != null) { Rectangle pathBounds = tree.getPathBounds(path); if (pathBounds != null) { if(x>60 && pathBounds.x<40){ return; }else if(x>42 && pathBounds.x<20){ return; }else if(x>24 && pathBounds.x<5){ return; } System.out.println("x:" + x + " " + pathBounds.x + " "); CheckBoxTreeNode node = (CheckBoxTreeNode) path.getLastPathComponent(); if (node != null) { boolean isSelected = !node.isSelected(); node.setSelected(isSelected); ((DefaultTreeModel) tree.getModel()).nodeStructureChanged(node); } } } } } }