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/

相关文章:

java - 延迟加载模型

c# - 如何在WPF中绘制一个可点击的矩形

java - 图库 View 中的空白图像 – Android

java - 在 IntelliJ 上访问在 GUI 设计器中创建的组件

java - 为什么 Fantom 找不到 jar 中的资源?

java - 如何使用spring对MongoDB进行分页?

c++ - 如何为 sigc++ 编写包装类?

javascript - 仅在没有其他监听器存在时才添加 Javascript EventListener?

Python 获取 SettingWithCopyWarning - iloc 与 loc - 无法弄清楚原因

android - 自定义软键盘 View 显示不正确