Java mouseReleased()方法查询

Java mouseReleased()方法查询,java,awt,mouse,Java,Awt,Mouse,我从一个学习资源中获取了以下代码。当我运行小程序时,我注意到只有在拖动鼠标后才会显示“Up”如果按下鼠标按钮然后在同一位置释放,则不显示“向上”。为什么在后一种情况下不显示“Up” // Demonstrate the mouse event handlers. import java.awt.*; import java.awt.event.*; import java.applet.*; /* <applet code="MouseEvents" width=300 he

我从一个学习资源中获取了以下代码。当我运行小程序时,我注意到只有在拖动鼠标后才会显示“Up”如果按下鼠标按钮然后在同一位置释放,则不显示“向上”。为什么在后一种情况下不显示“Up”

// Demonstrate the mouse event handlers. 
import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 
/* 
  <applet code="MouseEvents" width=300 height=100> 
  </applet> 
*/ 

public class MouseEvents extends Applet 
  implements MouseListener, MouseMotionListener { 

  String msg = ""; 
  int mouseX = 0, mouseY = 0; // coordinates of mouse 

  public void init() { 
     addMouseListener(this); 
     addMouseMotionListener(this); 
  } 

  // Handle mouse clicked. 
  public void mouseClicked(MouseEvent mld) { 
    mouseX = 0; 
    mouseY = 20; 
    msg = "Mouse clicked."; 
    repaint(); 
  } 

  // Handle mouse entered. 
  public void mouseEntered(MouseEvent mld) { 
    mouseX = 0; 
    mouseY = 30; 
    msg = "Mouse entered."; 
    repaint(); 
  } 

  // Handle mouse exited. 
  public void mouseExited(MouseEvent mld) { 
    mouseX = 0; 
    mouseY = 10; 
    msg = "Mouse exited."; 
    repaint(); 
  } 

  // Handle button pressed. 
  public void mousePressed(MouseEvent mld) { 
    // save coordinates 
    mouseX = mld.getX(); 
    mouseY = mld.getY(); 
    msg = "Down"; 
    repaint(); 
  } 

  // Handle button released. 
  public void mouseReleased(MouseEvent mld) { 
    // save coordinates 
    mouseX = mld.getX(); 
    mouseY = mld.getY(); 
    msg = "Up"; 
    repaint(); 
  } 

  // Handle mouse dragged. 
  public void mouseDragged(MouseEvent mld) { 
    // save coordinates 
    mouseX = mld.getX(); 
    mouseY = mld.getY(); 
    msg = "*"; 
    showStatus("Dragging mouse at " + mouseX + ", " + mouseY); 
    repaint(); 
  } 

  // Handle mouse moved. 
  public void mouseMoved(MouseEvent mld) { 
    // show status 
    showStatus("Moving mouse at " + mld.getX() + ", " + mld.getY()); 
  } 

  // Display msg in applet window at current X,Y location. 
  public void paint(Graphics g) { 
    g.drawString(msg, mouseX, mouseY); 
  } 
}
//演示鼠标事件处理程序。
导入java.awt.*;
导入java.awt.event.*;
导入java.applet.*;
/* 
*/ 
公共类MouseEvents扩展小程序
实现MouseListener、MouseMotionListener{
字符串msg=“”;
int mouseX=0,mouseY=0;//鼠标坐标
public void init(){
addMouseListener(这个);
addMouseMotionListener(此);
} 
//鼠标点击手柄。
公共无效mouseClicked(MouseEvent mld){
mouseX=0;
老鼠=20;
msg=“鼠标单击。”;
重新油漆();
} 
//鼠标进入手柄。
公共无效mouseenterned(MouseEvent mld){
mouseX=0;
老鼠=30;
msg=“鼠标输入。”;
重新油漆();
} 
//鼠标把手退出。
公共无效mouseExited(MouseEvent mld){
mouseX=0;
mouseY=10;
msg=“鼠标已退出。”;
重新油漆();
} 
//把手按钮按下。
public void mousePressed(MouseEvent mld){
//保存坐标
mouseX=mld.getX();
mouseY=mld.getY();
msg=“向下”;
重新油漆();
} 
//把手按钮松开。
公共无效MouseEvent mld{
//保存坐标
mouseX=mld.getX();
mouseY=mld.getY();
msg=“向上”;
重新油漆();
} 
//鼠标拖动手柄。
公共无效mouseDragged(MouseEvent mld){
//保存坐标
mouseX=mld.getX();
mouseY=mld.getY();
msg=“*”;
showStatus(“在“+mouseX+”、“+mouseY”处拖动鼠标);
重新油漆();
} 
//移动鼠标手柄。
public void mouseMoved(MouseEvent mld){
//显示状态
showStatus(“将鼠标移动到“+mld.getX()+”、“+mld.getY()”);
} 
//在当前X、Y位置的小程序窗口中显示消息。
公共空间绘制(图形g){
g、 抽绳(味精、慕斯、慕斯);
} 
}

拖动时将不会调用
鼠标单击
,但将调用
鼠标释放
。在单个位置单击时,
mousererelease
后面跟着
mouseClicked
,因此已单击事件将覆盖已发布的内容

尝试将
System.out.println
语句添加到
MouseListener
方法中,并在控制台中跟踪输出

// Handle mouse clicked. 
public void mouseClicked(MouseEvent mld) {
    mouseX = 0;
    mouseY = 20;
    msg = "Mouse clicked.";
    System.out.println("clicked");
    repaint();
}

// Handle button pressed. 
public void mousePressed(MouseEvent mld) {
    // save coordinates 
    mouseX = mld.getX();
    mouseY = mld.getY();
    msg = "Down";
    System.out.println("down");
    repaint();
}

// Handle button released. 
public void mouseReleased(MouseEvent mld) {
    // save coordinates 
    mouseX = mld.getX();
    mouseY = mld.getY();
    msg = "Up";
    System.out.println("up");
    repaint();
}

// Handle mouse dragged. 
public void mouseDragged(MouseEvent mld) {
    // save coordinates 
    mouseX = mld.getX();
    mouseY = mld.getY();
    msg = "*";
    showStatus("Dragging mouse at " + mouseX + ", " + mouseY);
    System.out.println("dragged");
    repaint();
}

// Handle mouse dragged. 
public void mouseDragged(MouseEvent mld) {
    // save coordinates 
    mouseX = mld.getX();
    mouseY = mld.getY();
    msg = "*";
    showStatus("Dragging mouse at " + mouseX + ", " + mouseY);
    System.out.println("dragged");
    repaint();
}
你应该看到

down
up
clicked
当您单击单个点时

down
dragged
.
.
.
up

当它被拖动时

是的,但它被
鼠标点击
事件压倒