无法使MouseListener工作

时间:2013-06-21 23:52:57

标签: java mouseevent mouselistener

好的,我第一次尝试使用MouseListener,但我运气不好。我的程序编译正常,但MouseListener事件似乎没有做任何事情。这是我的代码:

import java.awt.color.*;
import java.awt.font.*;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class yo implements MouseListener {

Image image;
JFrame frame = new JFrame();
JLabel heloo = new JLabel("yo");
JPanel panel = new JPanel()
{
    @Override
    public void paintComponent(Graphics g)
    {
        //super.paintComponent(g);
        //ImageIcon i = new ImageIcon("hi.jpg");
        //image = i.getImage();
        //g.drawImage(image,150,150,null);
        //g.drawString("Hello",100,100);
        //g.drawString("Hi",50,50);
    }
};


public yo()
{
    frame.add(panel);
    frame.setTitle("Hello");
    frame.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    panel.add(heloo);
}

public void mouseClicked (MouseEvent Event)
{
    heloo.setText("Hi");
    System.out.println("Hi");
}
public void mouseEntered (MouseEvent Event)
{System.out.println("Hi");}
public void mouseExited (MouseEvent Event)
{}
public void mousePressed (MouseEvent Event)
{}
public void mouseReleased (MouseEvent Event)
{}

public static void main(String[] args)
{
    new yo();
}
}

我没有做任何事情,我的意思是系统不会将文本输出到命令行或更改JLabel。

如何让它发挥作用的任何帮助都会很棒,谢谢。

P.S。我是个菜鸟,所以要好。

3 个答案:

答案 0 :(得分:2)

阅读How to Write a MouseListener上的Swing教程。

您没有将侦听器添加到任何组件。

答案 1 :(得分:0)

frame.addMouseListener(this);

在构造函数

答案 2 :(得分:0)

您制作了yoMouseListener,但未将其添加到任何内容中。

您需要在要收听的每个组件上使用.addMouseListener(this);

e.g。

frame.addMouseListener(this),或者如果是静态方法frame.addMouseListener(myInstanceOfYo);

public yo()
{
    frame.add(panel);
    frame.setTitle("Hello");
    frame.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    panel.add(heloo);


    frame.addMouseListener(this);


}

编辑:

我还建议您将每个MouseListener方法中的测试文本更改为唯一,这样可以更容易地查看调用的内容以及何时调用。另外,让参数名称以小写字母开头(事件成为事件),这只是一个好习惯。

即。

public void mouseClicked (MouseEvent event)
{
    heloo.setText("Hi");
    System.out.println("Clicked.");
}
public void mouseEntered (MouseEvent event)
{
    System.out.println("Entered.");
}
public void mouseExited (MouseEvent event)
{
    System.out.println("Exited.");
}
public void mousePressed (MouseEvent event)
{
    System.out.println("Pressed.");
}
public void mouseReleased (MouseEvent event)
{
    System.out.println("Released.");
}