java applet中的.class错误

时间:2012-09-06 22:16:54

标签: java applet

我正在编写一个小程序,随机挑选10张卡并在屏幕上显示。但是,我收到一个.class错误和一个;我尝试传递String []时需要错误。有人帮吗?这是我的代码:

import java.awt.Graphics;
import java.awt.Color;
import java.awt.Image;
import java.applet.Applet;
import java.lang.Math;
import java.util.Random;

public class unit12Assignment extends Applet
{
Image card1 ... card52;

public void init()
{
    card1 = getImage( getDocumentBase(), "c1.gif" );
    ...
    card52 = getImage( getDocumentBase(), "sk.gif" );
}

public void getCards()
{
    String cardNumber; 
    double cardRandom;
    int cardRandomNumber;
    String[] cardSelection = new String[10];
    Random ran = new Random();

    for (int number = 0; number <=  9; )
    {
        cardRandom = ran.nextInt(52) + 1;
        cardRandomNumber = (int) Math.round( cardRandom );

        if ( cardRandomNumber > 0 && cardRandomNumber <= 52 )
        { 
            cardNumber =  "card" + cardRandomNumber;
            number++;
        }
    }   
    paint( String[] cardSelection );
}

public void paint(Graphics g, String[] card)
{
    setBackground( Color.green );
    g.drawImage( card[0], 10, 10, this);
    g.drawImage( card[1], 90, 10, this);
    g.drawImage( card[2], 170, 10, this);
    g.drawImage( card[3], 250, 10, this);
}

}

2 个答案:

答案 0 :(得分:2)

这一行:

paint( String[] cardSelection );

语法应该是

paint( cardSelection );

首次声明变量时,您只需要在变量之前编写类型(例如String[])。从那里可以通过它的名称来引用它。

我还注意到paint需要Graphics个参数以及String[],所以你也需要传递它:

Graphics g = getGraphicsSomehow();
paint(g, cardSelection);

编辑:有关使用Graphics替代解决方案的免责声明,请参阅Andrew Thompson's answer

答案 1 :(得分:1)

涉及getGraphics()的任何内容都是一个脆弱的解决方案。

如果用户拖动另一个应用程序。通过浏览器覆盖applet,然后最小化其他应用程序,它可能会擦除自定义绘制的像素。见Performing Custom Painting 如何正确绘画(当被告知这样做时会分解为“画画”)。

另一种方法是使用BufferedImage进行渲染,并将其显示在JLabel中。在需要时绘制到图像,然后重新绘制标签。