- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用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)
来启用相关事件的处理,然后重写 processMouseEvent
和 processMouseMotionEvent
来进行处理。
但是处理事件的首选方法不是重写process*
方法,而是注册单独的监听器对象。在您的情况下,您将创建另一个类(可能是主类中的内部类),它是 MouseAdapter 的子类,重写其中的相关事件 Hook 方法,然后通过以下方式注册适配器类的实例在主组件上调用 addMouseListener
和 addMouseMotionListener
。
有大量文档 on the Oracle website (以及其他地方)如何在 AWT 或 Swing 应用程序中实现事件处理。
关于java - 将 handleEvent(Event e) 替换为 processEvent(AWTEvent e),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407873/
我有一个从 QThreads 和主线程调用的方法。此方法有时可能需要很长时间才能在循环中进行计算,因此我放置了 QCoreApplication::processEvents() ,这可以防止 GUI
注意:所提供的代码只是给出了应用程序结构的概念 我有一个与外部硬件交互的 Qt 应用程序。该结构是这样的,用于与硬件接口(interface)的类继承自QObject,并与主GUI线程类组成。假设这个
由于只有一个QCoreApplication对象,为什么从哪个线程调用QCoreApplication::processEvents()无关紧要? 毕竟,线程都共享相同的地址空间。 最佳答案 您的标题
我有几个问题。 是否可以在一个线程上初始化 QApplication 对象并在另一个线程上销毁它? 为什么 QApplication 必须在分配它的同一线程上运行? 是否可以在创建 QApplicat
我的工作时间非常重要,我对 processEvents() 的行为有疑问。当我调用 processEvents() 时,它是否在单独的线程/进程上运行,以便在执行更多代码时它可能仍在运行? 如果不是,
QThread 文档建议了两种使代码在单独的线程中运行的方法。如果我使用 moveToThread 方法,我必须调用 processEvents() 来发出超时,以执行 lambda。而且这似乎花费了
我正在为 qt 编写一个新的平台插件,我想了解“processEvents”虚拟方法应该做什么?我的要求是我在文件描述符上接收事件并且应该将它们转换为 qt gui 事件并将它们传递给 qt。请建议。
我正在为 qt 编写一个新的平台插件,我想了解“processEvents”虚拟方法应该做什么?我的要求是我在文件描述符上接收事件并且应该将它们转换为 qt gui 事件并将它们传递给 qt。请建议。
在处理各种事件时,我的一般策略是创建一个 xxxHandler 类,如 MouseHandler、WindowHandler 等,它扩展了 Java 提供的适当的 xxxAdapter 类。 我刚刚回
我有一个用 PySide 编写的 Qt 应用程序(Qt Python 绑定(bind))。这个应用程序有一个 GUI 线程和许多不同的 QThreads,它们负责执行一些繁重的工作——一些相当长的任务
我正在尝试做一个项目,使用 Qt GUI C++ 5.6.2 在窗口上创建一些图形。我有两个名为“createVerticalSpeedIndicator”和“createAirSpeedIndica
下面是我的代码,用于列出目录的所有子目录。我用它来理解 PySide 中的 QThread 以及信号和槽。问题是,当我没有在 Main 类的 scan() 方法中使用 Qtcore.QApplicat
大家好 在我的 QT 应用程序中,我使用 OpenMP 来并行化循环。在循环中,我想更新当前 QMainWindow 的进度条值。以下代码片段显示了我是如何尝试这样做的: #ifdef OPENMP_
我有一个执行大量 IO 的循环,所以我不时调用 qApp->processEvents() 以保持 GUI 的 react 性。在 Linux 上,这会导致严重错误,因为提前调用了事件。 是否有可能从
有一个 QApplication::lastWindowClosed() 信号。 Qt docs说: This signal is emitted from QApplication::exec()
我正在开展一个项目,该项目使用 Qt 的 QCustomPlot 插件显示实时获取的实时数据。显示屏的背景色为黑色,多个数据通道的颜色不同。截图时,我们想让它适合打印,所以背景是白色的,所有数据都是黑
我通过实现 Microsoft.TeamFoundation.Framework.Server.ISubscriber 编写了一个 TFS 2013 插件界面。在 ProcessEvent 方法中,我
PyQT4.11 Python 2.7 我一直在尝试创建一个启动屏幕,以在选择特定选项卡时显示加载消息。当调用 app.processEvents() 时,我会显示一个灰色框而不是图像,但是如果我在调
我的应用程序绘制图像并为其添加标签。当窗口在等待输入时关闭,应用程序仍然在后台运行。这是我的捕获标签的函数示例。我是否遗漏了一些让程序正常退出的东西? void CustomMainWindow::
我想念任何Qt如果我替换 QApplication::exec() 的功能使用标准的 Windows 消息循环实现?这应该澄清我的意思: 运行事件处理的常用“Qt”方式: int main(int a
我是一名优秀的程序员,十分优秀!