java - 如何在 Java Applet 中的绘图之间进行延迟

标签 java applet awt

我正在编写一个程序来输入一个数字并在小程序上绘制该数量的随机颜色和位置的圆圈。我整晚都没睡,试图找出如何在每个圆圈出现之间添加延迟。现在,如果我有一个带有延迟的 for-each 语句,并说我输入 20 个圆圈并延迟 1000,那么它在 20 秒内不会执行任何操作,然后所有圆圈都会立即出现,因为在paint()方法结束之前屏幕不会刷新。

我能想到的唯一其他替代方法是在 start() 方法中使用 for-each 语句,该语句将颜色和坐标添加到数组中,并让 Paint() 方法绘制该数组中的所有圆圈。我可能是错的,但我想这会消耗太多的内存。

另一种可能性是在现有框架上添加一个圆圈而不清除它,但我找不到方法来做到这一点。

最佳答案

使用 javax.swing.Timer 将新的 Circle 对象添加到可扩展列表,例如 ArrayList。每次添加后调用repaint()。在paintComponent(Graphics)中绘制列表中的每个Circle

<小时/>

更新

不幸的是,我现在无法添加评论(请参阅 External JS failed to load 了解血淋淋的细节)。因此,我将其添加为编辑。

@mKorbel:不,我确定还没有在 1.6.0_26 上尝试过!如果我尝试过的话,我就会发布代码。 ;)

@Tycho:我没有注意到你添加了 标记并假定您正在使用 Swing。

你真的使用AWT吗? (如果是这样。)为什么?

<小时/>

@Tycho: "The only thing I could tell by quickly searching was that Swing is used more for user interfaces, which is not what I'm going for here."

嗯.. AWT Swing(使用 Applet/JAppletFrame/JFrame )用于开发图形用户界面。或者换句话说,无论是使用 AWT 或 Swing,还是开发小程序或自由 float 框架,您都在开发 (G)UI。

小程序可以扩展 java.applet.Applet (AWT) 或 javax.swing.JApplet (Swing)。

如果您的小程序扩展了 Applet,请将其更改为 Swing JApplet。很少有 GUI 开发人员能够很好地记住 AWT 并对其提供好的建议。我的建议都与JApplet/Swing 有关。使用 AWT 是行不通的。

关于java - 如何在 Java Applet 中的绘图之间进行延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6476714/

相关文章:

java - 如何在浏览器关闭时终止循环中的 Java-Applet?

html - 如何在 Chrome 中的 Java 小程序上显示 <div>

java - 当我删除 frame.add(Component) 时,组件必须是有效的对等体

java - 对象引用有多大?

java - 如何选择线程池大小?

java - cucumber JUnit : How to take screenshot when scenario step definitions are spread across classes?

供应商 Applet 中的 Java 区域设置问题

Java:合并 2 个图像不起作用

java - 自定义 FocusTraversalPolicy 类 Java Swing

Java JPopupMenu setVisible(false);