Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 Gui Gridlayout:删除某些对象并将另一个对象添加到其位置_Java_User Interface_Awt - Fatal编程技术网

Java Gui Gridlayout:删除某些对象并将另一个对象添加到其位置

Java Gui Gridlayout:删除某些对象并将另一个对象添加到其位置,java,user-interface,awt,Java,User Interface,Awt,我正在用Java创建一个赛车游戏,我在GUI部分遇到了麻烦 基本上,在我的游戏中,你扔一个骰子,两辆车中的一辆相应地从位置(9,0)向位置(0,0)移动。无论谁达到(0,0)都是赢家。问题是游戏已经准备好了,除了移动过程之外,一切都很完美。我使用GridLayout将地图呈现给用户,地图上有7种对象:道路、障碍物、加油站、结束牌、开始牌以及2辆车。我使用generate方法随机生成地图,然后将其传递给GUI类,这样它就可以完成它的工作,向用户显示地图 但是,我不知道如何从地图中删除某些瓷砖,以便

我正在用Java创建一个赛车游戏,我在GUI部分遇到了麻烦

基本上,在我的游戏中,你扔一个骰子,两辆车中的一辆相应地从位置(9,0)向位置(0,0)移动。无论谁达到(0,0)都是赢家。问题是游戏已经准备好了,除了移动过程之外,一切都很完美。我使用GridLayout将地图呈现给用户,地图上有7种对象:道路、障碍物、加油站、结束牌、开始牌以及2辆车。我使用generate方法随机生成地图,然后将其传递给GUI类,这样它就可以完成它的工作,向用户显示地图

但是,我不知道如何从地图中删除某些瓷砖,以便向用户显示汽车所在的位置。我使用图像,然后将它们放入标签中。我最初的行动是从网格中删除整个组件,并在汽车上添加一个新的ImageIcon。此外,我知道“.setIcon”方法,但我如何知道要编辑哪个ImageIcon

生成方法

    public void generate(){
    int result;
    int greenCounter = 0;
    int blackCounter = 0;
    for (int i = 0; i < tiles.length; i++){
        for (int j = 0; j < tiles.length; j++){
            result = (int)(Math.random()*23 + 1);
            if (i == 0 && j == 0) tiles[i][j] = new Start();
            else if (i == 9 && j == 0) tiles[i][j] = new End();
            else if (result > 2) tiles[i][j] = new Grey();
            else if (result == 1) {
                blackCounter++;
                if (blackCounter <=6) tiles[i][j] = new Black();
                else tiles[i][j] = new Grey();
            }
            else if (result == 2){
                greenCounter++;
                if (greenCounter <=6) tiles[i][j] = new Green();
                else tiles[i][j] = new Grey();
            }
        }
    }
}
public void generate(){
int结果;
int绿色计数器=0;
int blackCounter=0;
对于(int i=0;i2)平铺[i][j]=新灰色();
else if(结果==1){
黑计数器++;
if(blackCounter您可以使用add(Component,index)将替换组件添加到正确的位置。您可以通过在Container.getComponents()的结果中查找旧组件来计算出正确的索引,或者如果您知道行和列,则仅通过数学计算即可

但是,我不知道如何从地图上删除某些瓷砖,以便向用户显示汽车所在的位置

您不应该使用行/列值来显示组件所在的“网格”。然后您可以使用
容器的
移除(…)
添加(…)
方法将组件移除/添加到面板中。类似于:

int index = (rowIndex * cellsInRow) + columnIndex.
panel.remove(index);
panel.add(component, index);
panel.revalidate();
panel.repaint();
或者更简单的方法是使用

label.setIcon(...) method.
int index = (rowIndex * cellsInRow) + columnIndex.
panel.remove(index);
panel.add(component, index);
panel.revalidate();
panel.repaint();
label.setIcon(...) method.