Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保我的形象赢得';不要被画在我的框架之外?_Java_Swing_Graphics - Fatal编程技术网

Java 如何确保我的形象赢得';不要被画在我的框架之外?

Java 如何确保我的形象赢得';不要被画在我的框架之外?,java,swing,graphics,Java,Swing,Graphics,我正在做一个项目,在一个600x600的窗口中随机抽取一个64x64红色的球,它会从“墙”上移动和反弹。(窗口边框)我的红色球是一个在JPanel上绘制的JLabel。我正在使用挫折。我相信您在setBounds中输入的数字将是您正在绘制的图像的左上角。所以我认为图像的随机坐标应该是0到536(即600-64)。但是,当我这样做时,只显示图像的一半。另一半无法看到,因为它位于JFrame之外。如何使其在运行时始终100%可见 import java.awt.*; import javax.sw

我正在做一个项目,在一个600x600的窗口中随机抽取一个64x64红色的球,它会从“墙”上移动和反弹。(窗口边框)我的红色球是一个在JPanel上绘制的JLabel。我正在使用挫折。我相信您在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();
}

}/P>< P>因为球的中心线正好在它的中间-通过将半径加到设置界限来弥补差异——只是一个快速答案< /P>改变球检查的边界…只需将屏幕剪辑处的边界移回ballso立根圆周的一半(bpx+半径,bpy+半径,64,64)?