我刚开始学习java,除了JFrame
和JLayout
.
如何在 JFrame 中实现一个对象(球),并使其无限次反弹墙壁?
您可以通过swing
with Thread
concept创建它
swing
您可以在概念中通过摇摆 drawImage 来创建球
要执行移动和延迟概念,您可以使用Thread
pakage
为此,请参阅参考Java 完整版 7
一种方法是在 JFrame 中添加一个 JPanel 的子类,该子类具有重写的paintComponent 方法。此类可以具有用于球位置的字段和用于重新绘制面板的 javax.swing.Timer。它可能是这样的(未经测试):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class BouncingBall extends JPanel{
//Ball position
private int x = 0;
private int y = 0;
//Position change after every repaint
private int xIncrement = 5;
private int yIncrement = 5;
//Ball radius
private final int R = 10;
private Timer timer;
public BouncingBall(){
timer = new Timer(25, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
BouncingBall.this.repaint();
}
});
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
//If the ball hits one of the panel boundaries
//change to the opposite direction
if (x < 0 || x > getWidth()) {
xIncrement *= -1;
}
if (y < 0 || y > getHeight()) {
yIncrement *= -1;
}
//increment position
x += xIncrement;
y += yIncrement;
//draw the ball
g.fillOval(x - R, y - R, R * 2, R * 2);
}
}