Star 类中的 move() 方法负责移动星星。但是,它仅检查 WIDTH 和 HEIGHT 常量,这些常量是为绘制星形的 JPanel 的大小定义的。这意味着,如果星星移动到 JPanel 之外,它将继续向同一方向移动,并且不会在 JPanel 内重新定位。
要解决此问题,需要将 move() 方法更新为检查 JPanel 所在的 JFrame 的宽度和高度。这样,如果 Star 移动到 JPanel 之外,它将在 JFrame 内重新定位。以下是 move() 方法的更新代码:
public void move() { if (location.x < 0 || location.x > frame.getContentPane().getWidth() - 20) { xIncr = -xIncr; } if (location.y < 0 || location.y > frame.getContentPane().getHeight() - 20) { yIncr = -yIncr; } translate(xIncr, yIncr); location.setLocation(location.x + xIncr, location.y + yIncr); }
以上是如何使用 move() 方法将星形运动限制在 JFrame 内?的详细内容。更多信息请关注PHP中文网其他相关文章!