我想制作一个应用程序,以便在绘画中绘制一个矩形。 我使用了事件“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)
如何解决这个问题?或者有另一种方法可以做到这一点?我已经测试了拖放但它也不起作用。 (SWT drop cursor position on canvas)