Java JLabel阵列的显示变慢

Java JLabel阵列的显示变慢,java,arrays,swing,jlabel,Java,Arrays,Swing,Jlabel,我目前正在开发一款类似流氓的游戏,使用Swing。我正在使用一个JLabel数组来显示瓷砖。当用户输入方向时,我使用以下方法重新绘制整个选项卡(我在这里使用简化变量名): for(int i=0;i在两个循环之后调用this.validate();一次,以避免重新计算布局首选项 更新。在地图中保留图像图标,并重复使用它们,而不是重新创建。键可以是i+“\ux”+j String不久前,当我想开始制作游戏时,我使用了这个库:。尽管这是一个低级库,但要小心。既然他们有很多教程,为什么不尝试使用Uni

我目前正在开发一款类似流氓的游戏,使用Swing。我正在使用一个JLabel数组来显示瓷砖。当用户输入方向时,我使用以下方法重新绘制整个选项卡(我在这里使用简化变量名):


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


更新。在地图中保留图像图标,并重复使用它们,而不是重新创建。键可以是i+“\ux”+j String

不久前,当我想开始制作游戏时,我使用了这个库:。尽管这是一个低级库,但要小心。既然他们有很多教程,为什么不尝试使用Unity呢?为什么不使用而不是删除和读取JLabel?你知道哪些标题会更改吗?你可以只更新影响chan的互动程序Get问题是,它会一个接一个地重新绘制分幅,导致奇怪的显示。我希望它一次绘制整个数组,而不是一个接一个地绘制分幅(我尝试将
validate()
放在循环之外,结果仍然相同)。可能使用静态绘制?我就是这么做的,但它会一个接一个地重新绘制瓷砖,导致奇怪的显示(速度快,但不够快,无法平滑)。我希望它绘制一次整个阵列。编辑:如果你知道我的意思,它看起来像“波浪”效果。你使用哪种布局?可能最好选择另一种布局(甚至实施自己的更快的LayoutManager)也可以考虑把它们放在一个JTALE中并使用渲染器。猜你有很多相似的图片。我在使用GrdDead,因为它看起来对我来说更合乎逻辑。你觉得用另外一个会增加性能吗?GrIDayStayy是好的。行/ Cals有多大?20×30。我所做的是生成一个大地图(2D int数组,150×150)。,然后使用20*30 JLabel数组生成显示。每个磁贴为32*32像素(以防可能影响性能)。
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();
    }
}