マウス入力でキャンバスを管理するには、HandlerRegistrationをマウス入力で追加する必要があります。ここで私はあなたが何かを一緒に置くのを助けるかもしれないそれをやったのです。
私の現在のプロジェクトのこのクラスはモジュール間を行き来します。セットアップするには
/* PreviewCanvas replaces Canvas which makes it more reliable when
* adding and removing mouse handlers as the reference gets passed
* through to the editing module and then through to the size bar.
* At least now it can remove any handlers when initiating another
* module editor.
*/
public class PreviewCanvas {
public Canvas canvas;
// handler registrations (allows sharing across modules)
public HandlerRegistration mousedown = null;
public HandlerRegistration mouseup = null;
public HandlerRegistration mousemove = null;
public PreviewCanvas() {}
public void setHandlers(HandlerRegistration mousedownhandler,
HandlerRegistration mouseuphandler,
HandlerRegistration mousemovehandler) {
mousedown = mousedownhandler;
mouseup = mouseuphandler;
mousemove = mousemovehandler;
}
public void removeHandlers() {
if (mousedown != null) {
mousedown.removeHandler();
mousedown = null;
}
if (mouseup != null) {
mouseup.removeHandler();
mouseup = null;
}
if (mousemove != null) {
mousemove.removeHandler();
mousemove = null;
}
}
}
ご自身の使用のためのハンドラ:このことができます
canvas.clearHandlers();
HandlerRegistration mousedownhandler = canvas.canvas.addMouseDownHandler(new MouseDownHandler() {
@Override
public void onMouseDown(MouseDownEvent event) { // mouse DOWN
int x = event.getX();
int y = event.getY();
// etc ...
}
});
HandlerRegistration mouseuphandler = canvas.canvas.addMouseUpHandler(new MouseUpHandler() {
@Override
public void onMouseUp(MouseUpEvent event) { // mouse UP
if (mousedown) {
int x = event.getX();
int y = event.getY();
// etc ...
}
mousedown = false;
}
});
HandlerRegistration mousemovehandler = canvas.canvas.addMouseMoveHandler(new MouseMoveHandler() {
@Override
public void onMouseMove(MouseMoveEvent event) { // mouse MOVE
if (mousedown) {
int x = event.getX();
int y = event.getY();
// etc ...
}
}
});
// PreviewCanvas var
canvas.setHandlers(mousedownhandler, mouseuphandler, mousemovehandler);
希望...
私はあなたが正しい方向にいると思うし、「しかし、追加のマウスを修正する必要があります私のキャンバスオブジェクトへのイベントハンドラは何も追跡しません "問題。 – Andrei