java - 为什么在paint() 外部声明的变量在paint() 内部无法识别?

标签 java swing arraylist

为什么arraylist.get(0)运行时报错。编译时我没有收到错误,但当我运行它时,它运行完美,但它给出:

线程“AWT-EventQueue-0”中出现异常 java.lang.IndexOutOfBoundsException:索引:0,大小: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();

}
}

更新:编辑代码

最佳答案

在向 arraylist 添加任何内容之前,在 UI 线程中调用 Paint 多次。 您可以简单地检查它是否不为空,并在其中至少列出一项。

关于java - 为什么在paint() 外部声明的变量在paint() 内部无法识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27086067/

相关文章:

java - removeall 和 removeif 的用例

java - 为什么不应将 Java 的异常处理语句视为非本地分支的通用机制?

java - 如何防止绘制的形状在 Java 中消失?

java - 没有布局的按钮展开

java - UI 不是创建形状

java - 如何使用 JPA 从多列构造模型实例

java - OnClickListener 内部的实现函数 - Android

java - 无法使用 setValueAt() 编辑我的 JTable 数据

java - 将csv文件读取到arraylist对象

java - 如何对 ArrayList(不是数组)的列表进行排序?