【发布时间】:2014-08-05 09:36:19
【问题描述】:
我有一个扩展 JPanel 的外部类并拥有一个仅绘制图像的 paintComponent 方法,我的内部类也是一个 JPanel 并且是我的鼠标事件侦听器。这些事件通过在更改后调用重绘来改变绘图的外观,但似乎没有正确调用重绘
public class FollowingEyes extends JPanel
{
private Eye eye;
private Eye eye2;
private final int HEIGHT = 500;
private final int WIDTH = 500;
private OtherPanel panel;
public FollowingEyes()
{
eye = new Eye((WIDTH/2)-50,50);
eye2 = new Eye((WIDTH/2)+50,50);
panel = new OtherPanel();
setPreferredSize(new Dimension(500,500));
addMouseListener(panel);
addMouseMotionListener(panel);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
eye.draw(g);
eye2.draw(g);
}
private class OtherPanel extends JPanel implements MouseListener, MouseMotionListener
{
@Override
public void mouseEntered(MouseEvent e)
{
System.out.println("Mouse entered..");
eye.look(true);
eye2.look(true);
repaint();
}
@Override
public void mouseExited(MouseEvent e)
{
System.out.println("Mouse exited..");
eye.look(false);
eye2.look(false);
repaint();
}
@Override
public void mouseClicked(MouseEvent e){};
@Override
public void mousePressed(MouseEvent e){};
@Override
public void mouseReleased(MouseEvent e){};
@Override
public void mouseMoved(MouseEvent e)
{
eye.setAngle(e.getX(), e.getY());
eye2.setAngle(e.getX(), e.getY());
repaint();
}
@Override
public void mouseDragged(MouseEvent e){};
}
【问题讨论】: