小编Sol*_*ace的帖子

运行时显示的小程序中的随机数会更新每个帧,或者被背景图像透支

编辑:使用awt ...

我试图在基于applet的数学游戏中显示随机数,并遇到了一个问题.根据我调用方法的位置,发生以下两种情况之一:

  • 这些数字生成并正确显示,不会自动更新每个帧,但是在运行时更新时,每个帧都会被背景和艺术品绘制,或者......
  • 屏幕上显示的数字显示在背景元素上方,但每帧都重新绘制.

快速插图:

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);
}
Run Code Online (Sandbox Code Playgroud)

在初始化方法中调用此函数会显示一个静态问题,我可以在满足特定触发器时在其他位置更新,但是更新事件会在其上方绘制其他所有内容,使其不可见.我设法看到这个工作的唯一方法是从游戏中删除其他图像进行测试.

有没有办法在applet中设置GUI元素的"优先级"?

我目前正在尝试将该displayOutput()方法包含在它自己的线程中,但我对Java并不是那么有经验,并且证明它很难解决.

我也尝试不允许后台在运行时更新,但结果是移动的游戏对象在整个屏幕上留下了痕迹.

我错过了什么?如果有人对如何正确实施这些建议有任何建议,我会很高兴听到他们的意见.

更新:"...在AWT中使用Component的paint(...)方法绘制,并使用JVM传入的Graphics对象" - …

java random runtime awt graphics2d

2
推荐指数
1
解决办法
241
查看次数

标签 统计

awt ×1

graphics2d ×1

java ×1

random ×1

runtime ×1