我正在开发一个项目,在600x600窗口中随机绘制一个64x64红球,它将从“墙壁”移动并反弹。 (窗口的边框)我的红色球是在JPanel上绘制的JLabel。我正在使用setBounds。我相信你在setBounds中输入的数字将是你正在绘制的图像的左上角。所以我认为图像的随机坐标应该是0到536(即600 - 64)。但是,当我这样做时,只显示图像的一半。另一半无法看到,因为它在JFrame之外。如何在运行时始终保持100%可见的位置?
import java.awt.*;
import javax.swing.*;
public class BallBounce {
public JFrame frame;
public JPanel panel;
public JLabel ball;
public ImageIcon ballIcon = new ImageIcon("images/ball.png");
public int bpx; //ballpositionx
public int bpy;
public int bsx = 1; //ballspeedx
public int bsy = 1;
public BallBounce() {
frame = new JFrame();
frame.setTitle("Ball Bounce");
frame.setSize(600, 600);
frame.setResizable(false);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
panel = new JPanel();
panel.setLayout(null);
panel.setSize(600,600);
ball = new JLabel();
ball.setIcon(ballIcon);
bpx = (int)(Math.random()*536)+0;
bpy = (int)(Math.random()*536)+0;
ball.setBounds(bpx, bpy, 64, 64);
panel.add(ball);
frame.add(panel);
frame.revalidate();
}
public static void main(String args[]) {
BallBounce bb = new BallBounce();
}
}
答案 0 :(得分:1)
由于球的中心线实际上位于其中间 - 通过将半径添加到设定区来补偿差异 - 只需快速回答