JLabel数组的显示速度很慢

时间:2014-03-27 10:50:59

标签: java arrays swing jlabel

我目前正在使用Swing开发一款roguelike游戏。我正在使用JLabel数组来显示切片。当用户输入方向时,我使用以下方法重绘整个标签(我在这里使用简化的变量名称):

for (int i=0 ; i<array.length ; i++){
    for(int j=0 ; j<array[i].length ; j++){
        this.remove(array[i][j]);
        array[i][j] = new JLabel(new ImageIcon(TILEARRAY[i][j]));
        this.add(array[i][j]);
        this.validate();
    }
}

但处理起来非常沉重,重新绘制整个面板约0.5秒,当我按下方向时,它无法快速绘制以实现实时显示(它实际上是循环,沿着等待时间,当整个位移完成时,绘制)。我想知道是否有一种更容易,更快捷的方法来实现这一点,具有“平滑”的感觉(让我们说像Stone Soup Dungeon Crawl(瓷砖版)),使用Swing。

对于高效的Java库2D库的每一个建议也是受欢迎的。我知道有Slick2D,但这种游戏有没有其他好的图书馆?

由于

(对不起,如果我的英语不好,我不是母语为英语的人)

1 个答案:

答案 0 :(得分:2)

在两个循环之后只调用this.validate();一次以避免布局首选项重新计算

更新。将ImageIcons保留在Map中并重用它们而不是重新创建。键可以是i +&#34; _&#34; + j String