编辑:使用awt ...
我正在尝试在基于小程序的数学游戏中显示随机数,但遇到了问题。根据我调用该方法的位置,会发生以下两种情况之一:
- 数字生成并正确显示,不会自动更新每一帧,而是在运行时更新时被每帧的背景和艺术品绘制,或者......
- 屏幕上显示的数字显示在背景元素上方,但每帧都会重新绘制。
快速说明:
private int setNumberOne() {
return rand.nextInt(11) + 2;
}
private int setNumberTwo() {
return rand.nextInt(11) + 2;
}
private int setAnswer() {
return setNumberTwo() * setNumberOne();
}
private void displayOutput() {
Graphics2D g2d = graphics();
int one = setNumberOne();
int ans = setAnswer();
setNumberTwo();
g2d.setColor(Color.WHITE);
g2d.drawString(one + " x ? = " + ans, 480, 480);
}
在初始化方法中调用此函数会显示一个静态问题,当遇到特定触发器时,我可以在其他地方更新该问题,但是其他所有内容都被更新事件绘制在它之上,使其不可见。我设法看到这个工作的唯一方法是从游戏中删除其他图像进行测试。
有没有办法在小程序中设置 GUI 元素的“优先级”?
我目前正在考虑尝试将该displayOutput()
方法包含在它自己的线程中,但我对 Java 的经验并不丰富,而且事实证明它很难解决。
我还尝试不让背景在运行时更新,但结果是移动的游戏对象在屏幕上留下了痕迹。
我错过了什么?如果有人对如何正确实施有任何建议,我很高兴听到他们的声音。
更新:“...如果是 AWT,则在 [...] 组件的 paint(...) 方法中绘制,并使用 JVM 传入的 Graphics 对象” -
已解决,谢谢!