[英]Can't get MouseListener to work
好的,我是第一次尝试使用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。
任何关于如何让它工作的帮助都会很棒,谢谢。
ps我是个菜鸟,很好。
阅读关于如何编写MouseListener的Swing教程。
您没有将侦听器添加到任何组件。
放
frame.addMouseListener(this);
在构造函数中
你做了yo
一个MouseListener
,但你没有将它添加到任何东西。
你需要使用.addMouseListener(this);
在您要收听的每个组件上。
例如
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.");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.