java - 在监听器方法中使用 GC

标签 java events view swt mouselistener

我使用 this 创建了一个自定义 View 教程。我可以在 paintControl() 中绘制我想要的所有内容方法。我想做的是拥有一个MouseMoveListener除了我的PaintListener ,它应该在鼠标悬停时绘制一些附加的东西:

@Override
public void createPartControl(Composite parent) {

    canvas = new Canvas(parent, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
        public void paintControl(PaintEvent e) {
            // draw something
        }
    });

    canvas.addMouseMoveListener(new MouseMoveListener() {
        @Override
        public void mouseMove(MouseEvent e) {
            system.out.println(e.x + ", e.y");
            // draw something
        }
    });
}

是否可以使用GC里面mouseMove()方法,在现有形状之外绘制形状,创建于 paintControl() ?我试图设置GC作为实例变量并将其设置在 paintControl()mouseOver() 中重复使用它但不幸的是null在那一点上。

最佳答案

正如@Kuba 所说,您不能在 PaintEvent 之外使用 GC。 .

要重新绘制 Canvas ,请调用它的 redraw方法形成鼠标事件,如下所示:

canvas.addMouseMoveListener( new MouseMoveListener() {
    @Override
    public void mouseMove( MouseEvent event ) {
      canvas.redraw();
    }
} );

关于java - 在监听器方法中使用 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950103/

相关文章:

view - 如何以编程方式使用另一个 View 中的按钮从 Storyboard 中打开 UIViewController?

java - map 中的关键存在检查实用程序

java - 需要收集Java应用程序使用的SQL DML语句

c# .Net CF Form.Invoke 引发 ArgumentException

android保存以编程方式创建的 View

android - 如何获取在 Android 中添加我的 View 的容器的宽度

java - 用Java实现观察者模式,跨多个类的同一个观察者

java - 如何实现广度优先搜索到一定深度?

C#阻塞等待响应

c# - DataGridView SortCompare 事件不会触发