如何使java.awt Graphics2D字符串出现在applet中的随机位置

时间:2013-05-30 01:05:45

标签: java applet awt graphics2d

我几天前开始使用Java,并且正在试验并在我从库中借来的Java教程中使用一些Java代码。

它告诉我如何使用java.awt中的Graphics2D将字符串绘制到applet上,并更改其字体颜色,大小,类型等。

现在我挑战自己让字符串出现在applet中的随机位置。我尝试使用Math.random()来更改字符串的x-y坐标,但变量类型不同,我发现自己很困惑。有没有办法让每次打开applet时字符串都出现在随机位置? (我稍后会用.awt按钮移动字符串。)

这是我的代码:

package game;
import java.awt.*;

public class Javagame extends javax.swing.JApplet{
    public void paint(Graphics screen) {
        Graphics2D screen2D = (Graphics2D) screen;
        Font font = new Font("Arial Black", Font.PLAIN, 20);
        screen2D.setFont(font);
        screen2D.drawString("Hello World!", 50, 50); /*right now it is set at 50, 50
        but I want random variables. Thanks*/

    }
}

3 个答案:

答案 0 :(得分:3)

你想使用类似的东西:

screen2D.drawString("Hello World!", 
    (int)(Math.random()*width), 
    (int)(Math.random()*height));

宽度和高度是您想要的X和Y的最大值。 请参阅此相关问题:“Generating random numbers in a range.

答案 1 :(得分:2)

您可以尝试使用随机类:

Random r = new Random();
int x = r.nextInt(100);
int y = r.nextInt(100);

这将生成一个介于0和指定值之间的随机整数。

答案 2 :(得分:1)

从内存中,Math.ramdom()会返回一个双精度值0-1。位置参数需要int

您需要将double值转换为int

screen2D.drawString("Hello World!", (int)(Math.round(Math.random() * getWidth()), (int)(Math.round(Math.random() * getWidth()));

通常情况下,如果执行(int)doubleValue,则只会修剪尾随的十进制值。这可能是一件好事,这可能是一件坏事。我倾向于先把价值四舍五入,但那只是我。