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);
}
}
如何在不将其作为JComponent
或JLabel
或JPanel
的情况下将鼠标滑块添加到球类中?
答案 0 :(得分:2)
见Collision detection with complex shapes&amp;用鼠标位置替换小移动球,并使用Area.contains(Point2D)
调整Area
和Point
的碰撞代码。
该代码将可见部分呈现给标签中显示的图像。在容器/布局/约束中显示保留大小的标签,我们可以将鼠标监听器直接添加到标签。