Path2D (int scale, boolean closed) { Path2D path = new Path2D.Double(); int left = scale * getLeftGap(); int right = scale * getRightGap(); if (parent != null) { left += right; path.moveTo(bounds.x - left, bounds.y); path.lineTo(bounds.x - left + right, bounds.y + bounds.height * 0.5); } else { path.moveTo(bounds.x - left, bounds.y); } path.lineTo(bounds.x - left, bounds.y + bounds.height); if (closed) { path.lineTo(bounds.x + bounds.width, bounds.y + bounds.height); path.lineTo(bounds.x + bounds.width + right, bounds.y + bounds.height * 0.5); path.lineTo(bounds.x + bounds.width, bounds.y); path.closePath(); } return path; }