[英]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)
以啟用相關事件的處理,然后重寫processMouseEvent
和processMouseMotionEvent
以進行處理。
但處理事件的首選方法不是覆蓋process*
方法,而是注冊單獨的偵聽器對象。 在您的情況下,您將創建另一個類(可能是主要內部類中的內部類),它是MouseAdapter
的子類,覆蓋其中的相關事件掛鈎方法,然后通過調用addMouseListener
和addMouseMotionListener
來注冊適配器類的實例。主要成分。
有關如何在AWT或Swing應用程序中實現事件處理的Oracle網站 (以及其他地方)有大量文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.