为什么在paint()中声明的变量在paint()中无法识别?

时间:2014-11-23 05:54:09

标签: java swing arraylist

为什么arraylist.get(0)在运行时报告错误。编译时没有错误,但是当我运行它时,它运行得很完美,但它给出了:

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

并且程序报告错误位于实现arraylist.get(0)的行中。我在paint()之外声明了arraylist并且它给出了上面的错误。但是当我在paint()中声明它时,没有报告错误。但是,我想在外面声明arraylist

如何在paint();?

之外声明arraylist

这是我的代码:

class Game{

int x=0, y=250;
String line;
String[] list;
static  ArrayList<String> arraylist;

public static void main(String[] args){

    Game game= new Game();
    game.read();

}

public void read(){

arraylist= new ArrayList<String>();

    try{

        BufferedReader br = new BufferedReader(new FileReader("dictionary.txt"));
        line= br.readLine();
        list= line.split(" ");

        for(int i=0; i<list.length ;i++)
            arraylist.add(list[i]);

        Collections.shuffle(arraylist);

    }
    catch(Exception e){}
}

public void paint(Graphics g){

    super.paint(g);
    Graphics2D g2= (Graphics2D)g;
    Font font= new Font("Impact",Font.PLAIN,10);
    g2.setFont(font);
    g2.drawString(arraylist.get(0),x,y);

    try{
        Thread.sleep(50);
    }
    catch(Exception e){}

    repaint();

}
}

更新:编辑了代码

1 个答案:

答案 0 :(得分:0)

在添加到arraylist的任何内容之前,在UI线程中多次调用Paint。 你可以简单地检查它是否不为空,并在列表中列出一个项目。