Table.getItem (Point)이 항상 0 열에서 항목을 반환하는 이유는 무엇입니까?
-
21-08-2019 - |
문제
나는 org.eclipse.swt.widgets.table 클래스에 대해 더 유연한 tooptip을 제공하기 위해 클래스를 구현했습니다. 모두 알고 있듯이 기본적으로 전체 테이블에 대한 하나의 툴팁을 얻습니다. 각 셀에 대한 개별 팁이 아닙니다.
내 객체는 자체 위치에 민감한 툴팁을 구현하기 위해 많은 리스너를 만듭니다. 올바른 행.
문제의 테이블은이 약화와 함께 테이블 뷰어에 의해 만들어졌습니다 ...
viewer = new TableViewer( parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION );
내가 어디로 잘못 가고 있습니까?
해결책
답은 결국 TableItem은 행 내의 셀이 아니라 행을 나타내는 것입니다. 이 작은 방법은 당신을 위해 열 번호를 가져올 것입니다 ...
/**
* Get the column from the given TableItem and Point objects
* @param pt
* @param item
* @return -1 if no column is found
*/
public static int getColumn( Point pt, TableItem item )
{
int columns = item.getParent().getColumnCount();
for (int i=0; i<columns; i++)
{
Rectangle rect = item.getBounds (i);
if ( pt.x >= rect.x && pt.x < rect.x + rect.width ) return i;
}
return -1;
}
NB : 사각형. intersects (point)는 테이블 가장자리 위로 정확하게 호버링하면 실패 할 수 있으므로 대신 간단한 X 비교를 사용했습니다.
제휴하지 않습니다 StackOverflow