Rectangle bounds = getPathBounds(tree, path);
bounds = getPathBounds(tree, path);
  protected boolean startEditing(TreePath path, MouseEvent event)  {    int x;    int y;    if (event == null)      {        Rectangle bounds = getPathBounds(tree, path);        x = bounds.x;        y = bounds.y;      }    else      {        x = event.getX();        y = event.getY();      }    updateCellEditor();    TreeCellEditor ed = getCellEditor();    if (ed != null && ed.shouldSelectCell(event) && ed.isCellEditable(event))      {        editingPath = path;        editingRow = tree.getRowForPath(editingPath);        Object val = editingPath.getLastPathComponent();        cellEditor.addCellEditorListener(cellEditorListener);        stopEditingInCompleteEditing = false;        boolean expanded = tree.isExpanded(editingPath);        isEditing = true;        editingComponent = ed.getTreeCellEditorComponent(tree, val, true,                                                         expanded,                                                         isLeaf(editingRow),                                                         editingRow);        editingComponent.getParent().setVisible(true);        editingComponent.getParent().validate();        tree.add(editingComponent.getParent());        editingComponent.getParent().validate();        ((JTextField) editingComponent).requestFocusInWindow(false);        editorTimer.start();        return true;      }    return false;  }