将鼠标侦听器添加到 java swt 图像
Posted
技术标签:
【中文标题】将鼠标侦听器添加到 java swt 图像【英文标题】:Adding mouse listener to java swt image 【发布时间】:2012-07-19 18:15:04 【问题描述】:好的,所以我创建了这样的图像:
Image deleteImage = new Image(viewer.getTable().getDisplay(),
Provider.PATH_TO_DELETE_ICON);
如何添加鼠标侦听器以便知道何时单击图像?
这是我的标签提供者类:
private class MyLabelProvider extends LabelProvider implements
ITableLabelProvider
@Override
public Image getColumnImage(Object element, int columnIndex)
if (columnIndex == 3)
Image deleteImage = new Image(viewer.getTable().getDisplay(),
Provider.PATH_TO_DELETE_ICON);
return deleteImage;
if (columnIndex == 4)
Image editImage = new Image(viewer.getTable().getDisplay(),
Provider.PATH_TO_EDIT_ICON);
return editImage;
else
return null;
public String getColumnText(Object element, int index)
Provider provider = (Provider) element;
switch (index)
case 0:
return Integer.toString(provider.getId());
case 1:
return provider.getName();
case 2:
return provider.getBulstat();
default:
return "";
【问题讨论】:
【参考方案1】:你可以创建一个Label
,通过它设置你的图片
label.setImage(deleteImage)
之后您可以执行以下操作:
label.addMouseListener(new MouseListener()
@Override
public void mouseUp(MouseEvent arg0)
System.out.println("Click");
@Override
public void mouseDown(MouseEvent arg0)
@Override
public void mouseDoubleClick(MouseEvent arg0)
);
【讨论】:
这将是解决方案,但它需要是图像,因为我是从查看器的 LabelProvider 获取的。如果您能告诉我 LabelProvider 的 getImage 方法如何返回 Button 而不是解决方案的图像。 创建自己的LabelProvider
并覆盖getImage()
方法?只是猜测,还没有使用LabelProvider
。刚刚意识到,你不能重写一个方法,如果你改变了返回类型......那我不知道该怎么做。
LabelProvider 是用在 TableViewer 中的,对吧?你不能给那个添加一个监听器吗?您使用哪个 LabelProvider?
我可以,但是鼠标事件的来源变成了 TableViewer 的表格...我需要来源是 Image 对象。
好的,如果你在你的LabelProvider
中实现MouseListener
会怎样?那行得通吗?抱歉,我有点迷路了……以上是关于将鼠标侦听器添加到 java swt 图像的主要内容,如果未能解决你的问题,请参考以下文章