public void getLocation(AccessibleControlEvent e) {
			Rectangle location = null;
			Point pt = null;
			int childID = e.childID;
			if (childID == ACC.CHILDID_SELF) { // table
				location = getBounds();
				pt = getParent().toDisplay(location.x, location.y);
			} else if (columns.length > 0 && 0 <= childID && childID < columns.length) { // header cell
				CTableColumn column = columns [childID];
				location = new Rectangle (column.getX (), 0, column.getWidth(), getHeaderHeight());
				pt = toDisplay(location.x, location.y);
			} else { // item cell
				int columnCount = columns.length > 0 ? columns.length : 1;
				if (columns.length > 0) childID -= columnCount;
				if (0 <= childID && childID < itemsCount * columnCount) {
					int rowIndex = childID / columnCount;
					int columnIndex = childID - rowIndex * columnCount;
					location = items[rowIndex].getBounds(columnIndex);
					pt = toDisplay(location.x, location.y);
				}
			}
			if (location != null && pt != null) {
				e.x = pt.x;
				e.y = pt.y;
				e.width = location.width;
				e.height = location.height;
			}
		}