【发布时间】:2015-05-25 05:08:16
【问题描述】:
我在向其中添加按钮的 GridLayout 中有一个 JPanel。我想在输入鼠标和退出按钮时对按钮实现某种效果。当鼠标悬停在按钮上时会正确触发 mouseEntered 事件,但是,当鼠标离开按钮时不会触发 mouseExited 事件。我该如何解决这个问题?
自定义 JButton
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
public class CustomButton extends JButton implements MouseListener{
Dimension scaled;
public CustomButton(String text){
super(text);
setContentAreaFilled(false);
setBorderPainted(false);
addMouseListener(this);
}
@Override
public void invalidate() {
super.invalidate();
scaled = getSize();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.BLUE);
g.drawRoundRect(0, 0, getWidth()-1, getHeight()-1, 20, 20);
g.fillRoundRect(0, 0, getWidth()-1, getHeight()-1, 20, 20);
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("entered the view");
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("exited the view");
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
“某种效果”什么效果?
-
我认为问题是您需要使用
MouseMotionListener而不是MouseListener。
标签: java swing jbutton mouselistener