【发布时间】:2014-12-22 17:45:18
【问题描述】:
我想知道是否有可能在鼠标上移时获取列表中的项目?我在网上搜索并找到了许多使用 X 和 Y 坐标但没有使用列表的 SWT 表示例。我基本上在做的是实现一个列表,其中项目的顺序可以通过拖放来更改。为此,我需要能够获取放置位置下的项目,以便我可以将该项目与拖动的项目交换。
【问题讨论】:
标签: java drag-and-drop swt
我想知道是否有可能在鼠标上移时获取列表中的项目?我在网上搜索并找到了许多使用 X 和 Y 坐标但没有使用列表的 SWT 表示例。我基本上在做的是实现一个列表,其中项目的顺序可以通过拖放来更改。为此,我需要能够获取放置位置下的项目,以便我可以将该项目与拖动的项目交换。
【问题讨论】:
标签: java drag-and-drop swt
List#getItemHeight() 返回一项所占区域的高度。有了这些信息和getTopIndex()you 应该能够计算给定 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 ) 的单列表来模拟列表小部件。该表格提供了更好的开箱即用拖放支持。
【讨论】: