首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pack()的替代方案

pack()的替代方案
EN

Stack Overflow用户
提问于 2015-03-27 19:38:01
回答 1查看 259关注 0票数 0

我正在制作一个地形生成器,我正在将超过一百万JPanels加载到我的帧中,这需要一个多小时的时间。我已经在pack()方法中隔离了大部分问题。除了使用它,还有其他的选择吗?或者有一种更快的方法?以下是我的一些代码:

代码语言:javascript
复制
    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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-27 19:42:56

这是大量的JPanels。我的建议--如果'Tile只是一个带有背景色的JPanel‘,那么只需使用一个JPanel进行自定义绘图。重写paintComponent方法并使用传递的Graphics对象绘制颜色。

代码语言:javascript
复制
@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);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29308883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档