gpt4 book ai didi

java - 向 JFrame 添加图 block 的更简单方法

转载 作者:行者123 更新时间:2023-11-30 08:18:45 25 4
gpt4 key购买 nike

我正在为地形生成器的 JFrame 添加一些图 block ,它看起来像这样:

        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));
}
}
}

我的图 block 类如下所示:

    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));
}
}

有更简单的方法吗?另外,有没有办法让 pack() 更快?

最佳答案

对于图 block 生成:

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

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

将颜色存储在数组中并像这样读取它们:

Color[] colors = new Color[]{}
setBackgroundColor(colors[color]);

关于java - 向 JFrame 添加图 block 的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29281583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com