Eclipse 在SWT应用程序中更改图形上下文
我有一个用SWT编写的简单应用程序。我正在从Eclipse 在SWT应用程序中更改图形上下文,eclipse,swt,Eclipse,Swt,我有一个用SWT编写的简单应用程序。我正在从SWT.Paint事件获取GC。在我的主画布中,我添加了一个MouseMove监听器,这样,如果鼠标位于指定区域,一些文本将显示在指定区域上 我想在鼠标不再停留在该区域后从GC中删除文本。我没有发现任何关于从GC中删除绘制对象或用新对象替换GC的内容 你能告诉我怎样才能取得这样的成绩吗?除了通过SWT.Paint事件之外,没有其他途径可以访问GC对象。无法删除GC上绘制的线条文本等元素。尽管GC有绘制文本和线条等的方法,但这些方法只是将形状转换为像素,
SWT.Paint
事件获取GC
。在我的主画布中,我添加了一个MouseMove
监听器,这样,如果鼠标位于指定区域,一些文本将显示在指定区域上
我想在鼠标不再停留在该区域后从GC
中删除文本。我没有发现任何关于从GC中删除绘制对象或用新对象替换GC的内容
你能告诉我怎样才能取得这样的成绩吗?除了通过
SWT.Paint
事件之外,没有其他途径可以访问GC
对象。无法删除GC上绘制的线条文本等元素。尽管GC有绘制文本和线条等的方法,但这些方法只是将形状转换为像素,这是GC所知道的全部
因此,应用程序应该维护一个模型,该模型允许定位文本并删除放置后的文本元素。每当模型更改时,应使用canvas.redraw()
刷新画布,该命令将发送SWT.Paint
事件。然后,绘制侦听器可以检查模型并相应地绘制文本
本文提供了有关SWTs图形上下文的更多详细信息。添加MouseTrackListener并控制鼠标进入和离开画布
MouseTrackListener mtl = new MouseTrackAdapter() {
@Override
public void mouseEnter(MouseEvent e) {
// add your PaintListener here
}
@Override
public void mouseExit(MouseEvent e) {
// remove PaintListener here
}
};
canvas.addMouseTrackListener(mtl)