gpt4 book ai didi

java - 将 handleEvent(Event e) 替换为 processEvent(AWTEvent e)

转载 作者:行者123 更新时间:2023-12-02 06:16:28 25 4
gpt4 key购买 nike

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 以来就已经存在)AWTEvent 方法不是包含所有内容的单个 Event 类,而是拥有 的不同子类>AWTEvent 用于不同目的。在您的情况下,它是您感兴趣的 MouseEvent 子类,因此您需要调用 enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK) 来启用相关事件的处理,然后重写 processMouseEventprocessMouseMotionEvent 来进行处理。

但是处理事件的首选方法不是重写process*方法,而是注册单独的监听器对象。在您的情况下,您将创建另一个类(可能是主类中的内部类),它是 MouseAdapter 的子类,重写其中的相关事件 Hook 方法,然后通过以下方式注册适配器类的实例在主组件上调用 addMouseListeneraddMouseMotionListener

有大量文档 on the Oracle website (以及其他地方)如何在 AWT 或 Swing 应用程序中实现事件处理。

关于java - 将 handleEvent(Event e) 替换为 processEvent(AWTEvent e),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com