簡體   English   中英

通過processEvent(AWTEvent e)替換handleEvent(事件e)

[英]replace handleEvent(Event e) by processEvent(AWTEvent e)

在用processEvent替換已棄用的函數handleEvent時,我找不到轉換代碼的方法。 有人可以幫忙嗎?

如何在processEvent上獲取x,y和事件的id?

這是我的功能:

public boolean handleEvent(Event evt) {

      if (evt.target == this) {
        // move floatting text zone
        if (dragingTextZone == true) {
            this.posStr.x = evt.x;
            this.posStr.y = evt.y;
            repaint(this.posStr.x,
                    this.posStr.y,
                    1000,
                    (int) (_imageViewer.getCurrent_font().getSize() * _imageViewer.getScalefactor()));

            if (evt.id == Event.MOUSE_DOWN) {
                dragingTextZone = false;
                addTextToPicture();
            }
        }

        if (evt.id == Event.MOUSE_DRAG) {

            if (dragitem.isDragging()) {
                repaint(dragitem.getX(),
                        dragitem.getY(),
                        dragitem.getWidth(),
                        dragitem.getHeight());
                dragitem.drag(evt.x, evt.y);
                repaint(dragitem.getX(),
                        dragitem.getY(),
                        dragitem.getWidth(),
                        dragitem.getHeight());
            }
        }
        else {
            if (evt.id == Event.MOUSE_UP) {
                // setting crop zone
                if (dragingCropZone || dragingMask) {
                    endDrag(evt);
                }
                else if (dragingLine) {
                    addLineToPicture();
                    endDrag(evt);
                }
            }
            if (evt.id == Event.MOUSE_DOWN) {
                if (getEditMode() == EDTMODE_ALL) {
                    if (evt.modifiers == Event.CTRL_MASK) {
                        startDragHighLight(evt);
                    }
                    else if (evt.modifiers == Event.ALT_MASK) {
                        startDragLine(evt);
                    }
                    else {
                        if (clickedOnFocusedItem(evt)) {
                            startDragMask(evt);
                        }
                    }
                }
            }
        }
    }

    return super.handleEvent(evt); // This passess the mouse click back up to Applet
}

謝謝,

新的(相對而言 - 自Java 1.1以來它一直存在)而不是包含所有內容的單個Event類, AWTEvent方法是為不同的目的使用不同的AWTEvent子類。 在您的情況下,它是您感興趣的MouseEvent子類,因此您需要調用enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK)以啟用相關事件的處理,然后重寫processMouseEventprocessMouseMotionEvent以進行處理。

但處理事件的首選方法不是覆蓋process*方法,而是注冊單獨的偵聽器對象。 在您的情況下,您將創建另一個類(可能是主要內部類中的內部類),它是MouseAdapter的子類,覆蓋其中的相關事件掛鈎方法,然后通過調用addMouseListeneraddMouseMotionListener來注冊適配器類的實例。主要成分。

有關如何在AWT或Swing應用程序中實現事件處理的Oracle網站 (以及其他地方)有大量文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM