我正在制作一个地形生成器,我正在将超过一百万JPanels加载到我的帧中,这需要一个多小时的时间。我已经在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。
发布于 2015-03-27 19:42:56
这是大量的JPanels。我的建议--如果'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);
}
}https://stackoverflow.com/questions/29308883
复制相似问题