Java SWT鼠标上下位置

Java SWT鼠标上下位置,java,canvas,swt,mouseevent,paint,Java,Canvas,Swt,Mouseevent,Paint,我想制作一个应用程序,以便绘制一个类似于绘画的矩形。 我使用事件“mouseDown”来获得第一个位置,而mouseUp用于第二个位置,但它不起作用 我不知道为什么它不起作用(我的程序也会因我的mouseUp事件而崩溃,但没有任何内容) 这是我的密码: Canvas paintC = new Canvas(shell, SWT.NONE); paintC.addMouseListener(new MouseAdapter() { @Override public void mou

我想制作一个应用程序,以便绘制一个类似于绘画的矩形。 我使用事件“mouseDown”来获得第一个位置,而mouseUp用于第二个位置,但它不起作用

我不知道为什么它不起作用(我的程序也会因我的mouseUp事件而崩溃,但没有任何内容)

这是我的密码:

Canvas paintC = new Canvas(shell, SWT.NONE);
paintC.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseUp(MouseEvent e) {
        GC gc = new GC(paintC);

        displayRelativePos2.x = e.x;
        displayRelativePos2.y = e.y;

        hauteur = displayRelativePos2.y - displayRelativePos1.y;
        largeur = displayRelativePos2.x - displayRelativePos1.x;

            gc.setBackground(SWTResourceManager.getColor(SWT.COLOR_RED));
            gc.fillOval(displayRelativePos1.x , displayRelativePos1.y , 50 , 50);
        }
        @Override
        public void mouseDown(MouseEvent e) {
            displayRelativePos1.x = e.x;
            displayRelativePos1.y = e.y;

        }
    });
以下是错误:

at Fenetre$1.mouseDown(Fenetre.java:148)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:192)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4230)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1491)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1514)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1499)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1299)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4072)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3698)
at Fenetre.open(Fenetre.java:86)
at Fenetre.main(Fenetre.java:71)

如何解决这个问题?还是有别的办法?我已经测试了拖放功能,但它不太起作用。()

“它不起作用”是不够的。解释实际发生了什么,您期望发生什么,以及您为调试做了什么。我编辑了,当我释放我的点击时,我的程序关闭。问题是我不知道如何调试它。我想这应该行得通。。(如果我只使用mouseDown并绘制一个随机矩形,它就可以工作了。但是mouseUp事件使我的程序崩溃)你能同时提到实际的错误吗?只是一个堆栈跟踪不会给出太多的信息。我没有错误,只是警告未使用的var或导入。我的程序在点击几秒钟后(未发布)崩溃“at Fenetre$1…”消息前的行是什么?第148行是哪一行?