在我的SWT应用程序中,我有一个显示地图的画布,目前我直接在画布上绘制一些数据表示。我希望实现像Swing这样的功能,我可以拥有一个ImageIcon,它可以管理它的点击监听并在画布上添加它们,如何实现,如何在画布上透明地添加一些,这样我仍然可以单击画布,哪些类像ImageIcon?目前我必须迭代以检查点击是否与我绘制点的位置匹配,这是不合需要的。
答案 0 :(得分:0)
您可以在画布上添加另一个(透明)画布,并在其上侦听鼠标事件。
org.eclipse.swt.graphics.Image dataImage = ...;
Canvas dataCanvas = new Canvas(mapCanvas, SWT.TRANSPARENT);
dataCanvas.addPaintListener(new PaintListener(){
@Override
public void paintControl(PaintEvent e) {
e.gc.drawImage(dataImage, 0, 0);
}
});
dataCanvas.setBounds(locationX, loctionY,
dataImage.getBounds().width, dataImage.getBounds().height);
dataCanvas.addMouseListener(...);