Java 在屏幕上随机显示图像(JFrame)
你们都知道了,我开始写关于空间的小游戏 “不错的开始”-:D 我写了一个工作计划,第一点是“随机生成恒星”。 你可以说,更容易使用随机数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); 但它不起作用( 它不起作用,因为画面在屏幕上“跳跃” 至于视频: 那么,你是如何
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()。当您更改组件的属性时,可以调用“重新绘制”。例如,如果您更改x/y值,或者如果您将新图像添加到面板中。