gpt4 book ai didi

java Canvas 抽绳

转载 作者:行者123 更新时间:2023-12-01 16:38:16 25 4
gpt4 key购买 nike

我想要在随机位置绘制一个字符串,然后跳转到一个新位置,但留下自己的印记。

java 中似乎没有“stamp”命令。

我该怎么做?

到目前为止,我只有一个随机角色,它会跳跃,但不会留下自身的副本。

import java.awt.Canvas;
import java.awt.Graphics;
import java.util.Random;

import javax.swing.JFrame;

@SuppressWarnings("serial")
public class test extends Canvas {

private static Random random = new Random();

public void paint(Graphics g) {
g.drawString("X", random.nextInt(10) * 10, random.nextInt(10) * 10);

try {
Thread.sleep(250);
} catch (Exception e ) {}

repaint();
}

public static void main(String[] argS) {
test canvas = new test();
JFrame frame = new JFrame();
frame.add(canvas);
frame.setSize(300, 300);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

最佳答案

建议:

  • 不要将 Swing 与 AWT 组件混合使用,因此不要使用 Canvas 对象,而是使用 JPanel。
  • 重写 JPanel 的 PaintComponent 方法。
  • 调用super.paintComponent方法作为paintComponent的第一行。
  • 使用 Swing Timer 来制作动画,并且切勿将 Thread.sleep 放入paint或paintComponent方法中。事实上,除非您知道如何在 Swing 中处理并发,否则您应该避免在 Swing GUI 中的任何位置使用 Thread.sleep。
  • 切勿在paint或paintComponent方法中调用repaint()。您很幸运,绘制管理器足够聪明,不会允许该调用导致递归引起的堆栈溢出错误。

关于java Canvas 抽绳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7004330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com