在Mouse Up上的SWT列表中获取该项目

我想知道是否有可能在鼠标中获取列表中的项目? 我在网上搜索了很多使用X和Y坐标但没有使用列表的SWT表的例子。 我基本上做的是实现一个列表,通过拖放可以改变项目的顺序。 为此,我需要能够在放置位置下获取该项目,以便我可以将该项目与拖动的项目交换。

List#getItemHeight()返回一个项占据的区域的高度。 使用该信息和getTopIndex()您应该能够在给定的x和y坐标处计算项目。

 list.addListener( SWT.MouseDown, new Listener() { @Override public void handleEvent( Event event ) { int itemTop = 0; for( int i = 0; i < list.getItemCount(); i++ ) { if( event.y >= itemTop && event.y <= itemTop + list.getItemHeight() ) { System.out.println( "Click on item " + list.getItem( list.getTopIndex() + i ) ); } itemTop += list.getItemHeight(); } } } ); 

或者,您可以使用带有setHeaderVisible( false )的单列表来模拟列表小部件。 该表提供了更好的拖放支持。