Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向JFrame添加平铺的更简单方法_Java_Jframe - Fatal编程技术网

Java 向JFrame添加平铺的更简单方法

Java 向JFrame添加平铺的更简单方法,java,jframe,Java,Jframe,我正在为我的地形生成器向JFrame添加一些平铺,看起来如下所示: for (double[] row : Terrain.tileData) { for (double d : row) { if (d >= 10000D) { add(new Tile(0, tileSize)); } else if (d >= 9500D) { add

我正在为我的地形生成器向JFrame添加一些平铺,看起来如下所示:

        for (double[] row : Terrain.tileData) {
        for (double d : row) {
            if (d >= 10000D) {
                add(new Tile(0, tileSize));
            } else if (d >= 9500D) {
                add(new Tile(1, tileSize));
            } else if (d >= 9000D) {
                add(new Tile(2, tileSize));
            } else if (d >= 8500D) {
                add(new Tile(3, tileSize));
            } else if (d >= 8000D) {
                add(new Tile(4, tileSize));
            } else if (d >= 7500D) {
                add(new Tile(5, tileSize));
            } else if (d >= 7000D) {
                add(new Tile(6, tileSize));
            } else if (d >= 6500D) {
                add(new Tile(7, tileSize));
            } else if (d >= 6000D) {
                add(new Tile(8, tileSize));
            } else if (d >= 5500D) {
                add(new Tile(9, tileSize));
            } else if (d >= 5000D) {
                add(new Tile(10, tileSize));
            } else if (d >= 4500D) {
                add(new Tile(11, tileSize));
            } else if (d >= 4000D) {
                add(new Tile(12, tileSize));
            } else if (d >= 3500D) {
                add(new Tile(13, tileSize));
            } else if (d >= 3000D) {
                add(new Tile(14, tileSize));
            } else if (d >= 2500D) {
                add(new Tile(15, tileSize));
            } else if (d >= 2000D) {
                add(new Tile(16, tileSize));
            } else if (d >= 1500D) {
                add(new Tile(17, tileSize));
            } else if (d >= 1000D) {
                add(new Tile(18, tileSize));
            } else if (d >= 500D) {
                add(new Tile(19, tileSize));
            } else {
                add(new Tile(20, tileSize));
            }
        }
    }
    public Tile(int color, int tileSize) {
    setVisible(true);
    setOpaque(true);
    setPreferredSize(new Dimension(tileSize, tileSize));
    if (color == 0) {
        setBackground(new Color(255, 255, 255));
    } else if (color == 1) {
        setBackground(new Color(138, 132, 125));
    } else if (color == 2) {
        setBackground(new Color(105, 100, 94));
    } else if (color == 3) {
        setBackground(new Color(77, 71, 64));
    } else if (color == 4) {
        setBackground(new Color(36, 32, 27));
    } else if (color == 5) {
        setBackground(new Color(69, 53, 42));
    } else if (color == 6) {
        setBackground(new Color(82, 48, 4));
    } else if (color == 7) {
        setBackground(new Color(17, 82, 4));
    } else if (color == 8) {
        setBackground(new Color(24, 115, 6));
    } else if (color == 9) {
        setBackground(new Color(56, 143, 39));
    } else if (color == 10) {
        setBackground(new Color(51, 156, 30));
    } else if (color == 11) {
        setBackground(new Color(29, 156, 3));
    } else if (color == 12) {
        setBackground(new Color(37, 201, 4));
    } else if (color == 13) {
        setBackground(new Color(67, 237, 33));
    } else if (color == 14) {
        setBackground(new Color(87, 85, 0));
    } else if (color == 15) {
        setBackground(new Color(176, 141, 2));
    } else if (color == 16) {
        setBackground(new Color(232, 195, 39));
    } else if (color == 17) {
        setBackground(new Color(224, 200, 101));
    } else if (color == 18) {
        setBackground(new Color(79, 67, 222));
    } else if (color == 19) {
        setBackground(new Color(36, 18, 227));
    } else if (color == 20) {
        setBackground(new Color(15, 0, 179));
    }
}
Color[] colors = new Color[]{}
setBackgroundColor(colors[color]);
我的tile类如下所示:

        for (double[] row : Terrain.tileData) {
        for (double d : row) {
            if (d >= 10000D) {
                add(new Tile(0, tileSize));
            } else if (d >= 9500D) {
                add(new Tile(1, tileSize));
            } else if (d >= 9000D) {
                add(new Tile(2, tileSize));
            } else if (d >= 8500D) {
                add(new Tile(3, tileSize));
            } else if (d >= 8000D) {
                add(new Tile(4, tileSize));
            } else if (d >= 7500D) {
                add(new Tile(5, tileSize));
            } else if (d >= 7000D) {
                add(new Tile(6, tileSize));
            } else if (d >= 6500D) {
                add(new Tile(7, tileSize));
            } else if (d >= 6000D) {
                add(new Tile(8, tileSize));
            } else if (d >= 5500D) {
                add(new Tile(9, tileSize));
            } else if (d >= 5000D) {
                add(new Tile(10, tileSize));
            } else if (d >= 4500D) {
                add(new Tile(11, tileSize));
            } else if (d >= 4000D) {
                add(new Tile(12, tileSize));
            } else if (d >= 3500D) {
                add(new Tile(13, tileSize));
            } else if (d >= 3000D) {
                add(new Tile(14, tileSize));
            } else if (d >= 2500D) {
                add(new Tile(15, tileSize));
            } else if (d >= 2000D) {
                add(new Tile(16, tileSize));
            } else if (d >= 1500D) {
                add(new Tile(17, tileSize));
            } else if (d >= 1000D) {
                add(new Tile(18, tileSize));
            } else if (d >= 500D) {
                add(new Tile(19, tileSize));
            } else {
                add(new Tile(20, tileSize));
            }
        }
    }
    public Tile(int color, int tileSize) {
    setVisible(true);
    setOpaque(true);
    setPreferredSize(new Dimension(tileSize, tileSize));
    if (color == 0) {
        setBackground(new Color(255, 255, 255));
    } else if (color == 1) {
        setBackground(new Color(138, 132, 125));
    } else if (color == 2) {
        setBackground(new Color(105, 100, 94));
    } else if (color == 3) {
        setBackground(new Color(77, 71, 64));
    } else if (color == 4) {
        setBackground(new Color(36, 32, 27));
    } else if (color == 5) {
        setBackground(new Color(69, 53, 42));
    } else if (color == 6) {
        setBackground(new Color(82, 48, 4));
    } else if (color == 7) {
        setBackground(new Color(17, 82, 4));
    } else if (color == 8) {
        setBackground(new Color(24, 115, 6));
    } else if (color == 9) {
        setBackground(new Color(56, 143, 39));
    } else if (color == 10) {
        setBackground(new Color(51, 156, 30));
    } else if (color == 11) {
        setBackground(new Color(29, 156, 3));
    } else if (color == 12) {
        setBackground(new Color(37, 201, 4));
    } else if (color == 13) {
        setBackground(new Color(67, 237, 33));
    } else if (color == 14) {
        setBackground(new Color(87, 85, 0));
    } else if (color == 15) {
        setBackground(new Color(176, 141, 2));
    } else if (color == 16) {
        setBackground(new Color(232, 195, 39));
    } else if (color == 17) {
        setBackground(new Color(224, 200, 101));
    } else if (color == 18) {
        setBackground(new Color(79, 67, 222));
    } else if (color == 19) {
        setBackground(new Color(36, 18, 227));
    } else if (color == 20) {
        setBackground(new Color(15, 0, 179));
    }
}
Color[] colors = new Color[]{}
setBackgroundColor(colors[color]);

有没有更简单的方法?另外,是否有一种方法可以让tilegeneration更快地
pack()

for(double d : row){
    înt v = 20 - d / 500;
    if(v < 0)
        v = 0;

    add(new Tile(v , tileSize));
}

比如:新瓷砖((100000-d)/500,瓷砖尺寸)?同样,尝试识别颜色参数中的模式,并将其转化为一个方程式;创建错误是否使用值初始化数组(我的代码只是为了演示,颜色可能应该是
Tile
静态final
变量)我的数组声明如下(相当简化):Color[]colors=new Color[]{new Color(255,255,255),new Color(123456789)};它在代码的setBackgroundColor部分下划线。您在哪里定义变量?应该是这样的:`public-class-Tile{private-static-final-Color[]colors=new-Color[]{…};}我将它从方法内移到了方法外,但是我的方法扩展了JPanel,我需要做什么特殊的事情吗?