添加MouseListener无需扩展Swing组件

时间:2014-10-23 11:13:27

标签: java swing mouselistener

我试图为学术界做一个小游戏。我想做的是让随机数量的球在JPanel内移动,随机方向,但当我点击球的内部时,它应该输出球的实际坐标。这是我的班级没有移动方法(我已经做了但不需要为此问题发布):

public class Ball implements Runnable {

    int x = UserInterface.BALL_START; 
    int y = 0;
    int size  = 10;     
    Color color;

    public Ball() {
        Random random = new Random();    
        int r, g, b;
        r = random.nextInt(256);
        g = random.nextInt(256);
        b = random.nextInt(256);
        color = new Color(r,g,b);
        y = random.nextInt(500);
    }

    public void run() {
        int vx = (new Random()).nextInt(10) + 1;                
        while (x < UserInterface.BALL_END) {
            x += vx;            
            try {
                Thread.sleep(15);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        x = UserInterface.BALL_END;
    }

    public int getX() {
        return x;
    }

    public void paint(Graphics g)  {
        g.setColor(color);
        g.fillOval(x - size / 2, y - size / 2, size, size);     
    }
}

如何在不将其作为JComponentJLabelJPanel的情况下将鼠标滑块添加到球类中?

1 个答案:

答案 0 :(得分:2)

Collision detection with complex shapes&amp;用鼠标位置替换小移动球,并使用Area.contains(Point2D)调整AreaPoint的碰撞代码。

该代码将可见部分呈现给标签中显示的图像。在容器/布局/约束中显示保留大小的标签,我们可以将鼠标监听器直接添加到标签。