我正在制作一个地形生成器,我正在将超过一百万个JPanel加载到我的框架中,这需要一个多小时。我已经在pack()
方法中分离了大部分问题。是否有使用它的替代方案,或者可能更快地完成它?以下是我的一些代码:
setLayout(new FlowLayout(0, 0, 0));
System.out.println("Generating...");
Chunk spawnChunk = new Chunk(this.mapSize);
System.out.println("Done\nAdding Tiles...");
for (double[] row : Chunk.tileData) {
for (double d : row) {
int v = (int) (20 - d / 500);
if(v < 0) {
v = 0;
}
else if (v > 20){
v = 20;
}
add(new Tile(v, tileSize));
}
}
System.out.println("Done\nPacking...");
pack();
System.out.println("Done\nRepainting...");
repaint();
System.out.println("Done");
注意:平铺只是一个背景颜色的JPanel
答案 0 :(得分:1)
这是很多JPanels。我的推荐 - 如果&#39; Tile只是一个背景颜色的JPanel,那么只需使用一个JPanel自己进行自定义绘图。覆盖paintComponent方法并使用传递的Graphics对象绘制颜色。
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
for ( int i = 0; i < numberOfTiles; i++ ){
g.setColor(colorOfCurrentTile);
g.fillRect(left, top, width, height);
}
}