Java 如何使按钮对鼠标单击作出反应

Java 如何使按钮对鼠标单击作出反应,java,swing,awt,Java,Swing,Awt,有人能帮我在作业中提出这个问题吗?“制作一个程序,通过显示一条消息指示用户单击的位置来响应鼠标单击。” 这是我的密码 package testprogh; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Testprogh extends MouseInputAdapter { public static void

有人能帮我在作业中提出这个问题吗?“制作一个程序,通过显示一条消息指示用户单击的位置来响应鼠标单击。”

这是我的密码

package testprogh;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


public class Testprogh extends MouseInputAdapter {


    public static void main(String[] args) {  
        JFrame frame=new JFrame();
        JButton btn=new JButton("RIGHT");
        JButton btn2=new JButton("LEFT");
        JButton btn3=new JButton("CENTER");
        JButton btn4=new JButton("DOWN");
        JButton btn5=new JButton("UP");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setLayout(new BorderLayout());
        frame.add(btn, BorderLayout.EAST);
        frame.add(btn2, BorderLayout.WEST);
        frame.add(btn3, BorderLayout.CENTER);
        frame.add(btn4, BorderLayout.SOUTH);
        frame.add(btn5, BorderLayout.NORTH);
        frame.setSize(400,400);
        frame.setVisible(true);
        Testprogh ha =new Testprogh();
        frame.addMouseListener(ha);
        frame.addMouseMotionListener(ha);
    }
    public void mouseClicked(MouseEvent event){
        JOptionPane.showMessageDialog(null, "test");
    }
}
但是这里的问题是没有显示消息对话框

import javax.swing.*;
导入javax.swing.event.MouseInputAdapter;
导入java.awt.*;
导入java.awt.event.MouseEvent;
导入java.awt.event.MouseListener;
公共类TestProgh扩展了MouseInputAdapter{
公共静态void main(字符串[]args){
JFrame=新JFrame();
JButton btn=新JButton(“右”);
JButton btn2=新JButton(“左”);
JButton btn3=新JButton(“中心”);
JButton btn4=新JButton(“向下”);
JButton btn5=新JButton(“向上”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
添加帧(btn,BorderLayout.EAST);
框架。添加(btn2,边界布局。西部);
框架.添加(btn3,边框布局.中心);
框架。添加(btn4,边界布局。南部);
框架。添加(btn5,边界布局。北);
框架。设置尺寸(400400);
frame.setVisible(true);
TestProgh ha=新的TestProgh();
帧。addMouseListener(ha);
frame.addMouseMotionListener(ha);
btn.addMouseListener(新的MouseListener(){
@凌驾
公共无效鼠标点击(MouseEvent MouseEvent){
System.out.println(“鼠标点击坐标x:+mouseEvent.getX()+”y:+mouseEvent.getY());
}
@凌驾
public void mousePressed(MouseEvent MouseEvent){
System.out.println(“鼠标按钮按下”+mouseEvent.getButton()+”在坐标x:“+mouseEvent.getX()+”y:“+mouseEvent.getY());
}
@凌驾
公共无效MouseEvent(MouseEvent MouseEvent){
System.out.println(“鼠标按钮释放”+mouseEvent.getButton()+”在坐标x:“+mouseEvent.getX()+”y:“+mouseEvent.getY());
}
@凌驾
公共无效mouseenterred(MouseEvent MouseEvent){
//我不知道这些
System.out.println(“鼠标进入坐标x:“+mouseEvent.getX()+”y:“+mouseEvent.getY()”)上的按钮区域“+mouseEvent.getButton()+”;
}
@凌驾
public void mouseexitted(MouseEvent MouseEvent){
System.out.println(“鼠标退出按钮区域”+mouseEvent.getButton()+”位于坐标x:“+mouseEvent.getX()+”y:“+mouseEvent.getY()”);
}
});
}
公共void mouseClicked(MouseEvent事件){
showMessageDialog(null,“test”);
}
}

您发布的代码不会显示JOptionPane消息对话框,因为您的框架中充满了按钮,因此当您单击任何按钮时,mouseClicked事件不会在添加到JFrame时触发。因此,您需要将MouseAdapter添加到如下按钮

btn.addMouseListener(new MouseAdapter() {
      @Override
      public void mouseClicked(MouseEvent e) {
          super.mouseClicked(e);
          JOptionPane.showMessageDialog(null, "test");
      }
});


您应该向每个按钮添加一个
ActionListener
。阅读上Swing教程中的部分以获取示例。你不应该用鼠标听器来做这样的事情。不过,为了便于将来参考,本教程还有一节介绍“如何编写鼠标听筒”。您需要将鼠标侦听器添加到所有组件,而不是框架,因为您单击的是按钮,而不是框架。
Testprogh ha =new Testprogh();
btn.addMouseListener(ha);