Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 在屏幕上随机显示图像(JFrame)_Java_Awt - Fatal编程技术网

Java 在屏幕上随机显示图像(JFrame)

Java 在屏幕上随机显示图像(JFrame),java,awt,Java,Awt,你们都知道了,我开始写关于空间的小游戏 “不错的开始”-:D 我写了一个工作计划,第一点是“随机生成恒星”。 你可以说,更容易使用随机数 Random random = new Random(); int x = random.nextInt(getWidth()*2); int y = random.nextInt(getHeight()*2); g.drawImage(Image,x,y,4,4,this); 但它不起作用( 它不起作用,因为画面在屏幕上“跳跃” 至于视频: 那么,你是如何

你们都知道了,我开始写关于空间的小游戏

“不错的开始”-:D

我写了一个工作计划,第一点是“随机生成恒星”。 你可以说,更容易使用随机数

Random random = new Random();
int x = random.nextInt(getWidth()*2);
int y = random.nextInt(getHeight()*2);
g.drawImage(Image,x,y,4,4,this);
但它不起作用(

它不起作用,因为画面在屏幕上“跳跃”

至于视频:

那么,你是如何随机带来星星的呢?(星星是一张小照片或一个白色正方形) 这就是全部代码:

    import java.awt.Graphics;

    import javax.imageio.ImageIO;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import java.io.IOException;

    public class Game extends JComponent {

    public Game() {
     try {
       image  = ImageIO.read(getClass().getResource("star.png"));
      } catch (IOException e) {
                e.printStackTrace();
      }
    }

    public void paint(Graphics g) {
        super.paint(g);
        repaint();

        Random random = new Random();
        int x = random.nextInt(getWidth()*2);
        int y = random.nextInt(getHeight()*2);
        g.drawImage(Image,x,y,4,4,this);

    }

    public static void main(String[] args) {
        JFrame frame = new JFrame(NAME);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.add(new Game());
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        frame.setResizable(true);
        frame.addMouseListener(mos);
        frame.addMouseMotionListener(mos);
    }
}
这里有一个代码不起作用( 图片又跳了起来

public void paintComponent(Graphics g) {
        super.paintComponent(g);
        repaint();
        Random random = new Random();
        int x = random.nextInt(getWidth()*2);
        int y = random.nextInt(getHeight()*2);
        g.drawImage(kor,x,y,10,10,this);
}
@camickr,你说过要删除重绘();但是没有它我就看不到图片

  • 自定义绘制是通过覆盖
    paintComponent()
    方法而不是paint()方法来完成的
  • 切勿在绘制方法中调用repaint()。这将导致无限循环

  • 如何修复图片?他们没有跳

    基本上,位置需要在涂漆方法之外确定

    也许你可以先在一个面板上绘制多个对象。我建议第一种方法是将对象添加到列表中。因此,你可以将多个对象添加到列表中,但每个对象都会有一个随机位置

    你说过要删除repaint();但是没有它我就看不到图片


    您是否花时间查看了我给您的链接?示例向您展示了何时进行重新绘制()。

    如何修复图片?他们没有跳转。“您说过要删除重新绘制();但如果没有它,我就看不到图片”你需要在某个地方有一个调用repaint的外部循环。你需要启动一个新线程来执行此操作。我也不明白你所说的“跳转”是什么意思。你在随机点上画圆圈并绘制它们,这就是屏幕截图所显示的。你不需要外部循环来调用repaint()。当您更改组件的属性时,可以调用“重新绘制”。例如,如果您更改x/y值,或者如果您将新图像添加到面板中。