gpt4 book ai didi

java - java 如何知道 mousePressed() 事件何时发生?

转载 作者:行者123 更新时间:2023-12-01 12:29:14 25 4
gpt4 key购买 nike

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class AppWindow extends Frame {

String keyMessage = "";
String MouseMsg = "";
int mouseX = 10;
int mouseY = 40;
int locX = 0;
int locY = 0;

public AppWindow() {
addMouseListener(new MyMouseAdaptor(this));
}

public void paint(Graphics g) {
g.drawString(keyMessage, mouseX, mouseY);
g.drawString(MouseMsg, locX, locY);
}

public static void main(String[] args) {
AppWindow appWindow = new AppWindow();
appWindow.setSize(400, 400);
appWindow.setVisible(true);
}
}

class MyMouseAdaptor extends MouseAdapter implements MouseListener {
AppWindow appWindow;

public MyMouseAdaptor(AppWindow appWindow) {
this.appWindow = appWindow;
}

public void mousePressed(MouseEvent e) {
this.appWindow.MouseMsg = "Mouse Pressed at : " + e.getX() + ", "
+ e.getY();
this.appWindow.locX = e.getX();
this.appWindow.locY = e.getY();
this.appWindow.repaint();
}
}

亲爱的大家

我有一个奇怪的问题。我知道上面代码中的所有内容,但我遗漏了一些东西。 Java 如何知道 mousePressed 事件何时发生?我需要为我自己的逻辑找到答案。代码写在哪里

当用户按下鼠标时 --> 触发方法“public void mousePressed(MouseEvent e)”并执行其中的操作

谢谢

最佳答案

这是注册以查找鼠标事件的代码:

public AppWindow() {
addMouseListener(new MyMouseAdaptor(this));
}

这是扩展 MouseAdaptor 并监听事件的类:

class MyMouseAdaptor extends MouseAdapter implements MouseListener {
AppWindow appWindow;

public MyMouseAdaptor(AppWindow appWindow) {
this.appWindow = appWindow;
}

public void mousePressed(MouseEvent e) {
this.appWindow.MouseMsg = "Mouse Pressed at : " + e.getX() + ", "
+ e.getY();
this.appWindow.locX = e.getX();
this.appWindow.locY = e.getY();
this.appWindow.repaint();
}
}

鼠标适配器:

用于接收鼠标事件的抽象适配器类。这个类中的方法是空的。此类的存在是为了方便创建监听器对象。鼠标事件可让您跟踪鼠标何时按下、释放、单击、移动、拖动、何时进入组件、何时退出以及何时移动鼠标滚轮。

扩展此类以创建 MouseEvent(包括拖动和移动事件)或/和 MouseWheelEvent 监听器并重写感兴趣事件的方法。 (如果你实现了MouseListener,MouseMotionListener接口(interface),你必须定义其中的所有方法。这个抽象类为它们都定义了空方法,所以你只需为你关心的事件定义方法。)

使用扩展类创建监听器对象,然后使用组件的 addMouseListener addMouseMotionListener、addMouseWheelListener 方法将其注册到组件。在以下情况下,将调用监听器对象中的相关方法并将 MouseEvent 或 MouseWheelEvent 传递给它:

  • 按下、释放或单击鼠标按钮(按下并释放)时
  • 当鼠标光标进入或退出组件时
  • 当鼠标滚轮旋转、或者鼠标移动或拖动时

Link

鼠标监听器:

用于接收组件上“有趣的”鼠标事件(按下、释放、单击、进入和退出)的监听器接口(interface)。 (要跟踪鼠标移动和鼠标拖动,请使用 MouseMotionListener。)对处理鼠标事件感兴趣的类要么实现此接口(interface)(及其包含的所有方法),要么扩展抽象 MouseAdapter 类(仅重写感兴趣的方法)。

然后,使用组件的 addMouseListener 方法向组件注册从该类创建的监听器对象。当鼠标被按下、释放、点击(按下和释放)时会产生鼠标事件。当鼠标光标进入或离开组件时也会生成鼠标事件。当鼠标事件发生时,监听器对象中的相关方法被调用,并将MouseEvent传递给它。

Link

现在,在您阅读完本文之后,我认为您将能够对您的程序进行一些更改,因为当您实现 MouseListener 接口(interface)时,您必须定义其中的所有方法..

关于java - java 如何知道 mousePressed() 事件何时发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081674/

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