Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 从JPanel中删除某些名称的JButton_Java - Fatal编程技术网

Java 从JPanel中删除某些名称的JButton

Java 从JPanel中删除某些名称的JButton,java,Java,我有一个名为TileLayer的JPanel,在这个面板上,我使用一个循环来创建一个JButton网格,其名称设置为坐标,如:X,Y。我需要删除循环中的一些按钮。我设置了一个侦听器,当按下一个键时,它将删除一行。我试图使用.remove();方法。但我似乎找不到允许我删除名为1,2或1,3或1,3等按钮的语法。这样做的正确语法是什么 下面是我认为循环的样子:cullX是在代码的前面确定的,确切地说是48。xCord和yCord也已经事先知道了。但是很明显,我使用的语法并不正确,这就是我需要弄清楚

我有一个名为TileLayer的JPanel,在这个面板上,我使用一个循环来创建一个JButton网格,其名称设置为坐标,如:X,Y。我需要删除循环中的一些按钮。我设置了一个侦听器,当按下一个键时,它将删除一行。我试图使用.remove();方法。但我似乎找不到允许我删除名为1,2或1,3或1,3等按钮的语法。这样做的正确语法是什么

下面是我认为循环的样子:cullX是在代码的前面确定的,确切地说是48。xCord和yCord也已经事先知道了。但是很明显,我使用的语法并不正确,这就是我需要弄清楚的

 while (buttonsRemoved <= cullX) {
        tileLayer.remove(xCord + "," + yCord);
        buttonsRemoved++;
        xCord++;
    }
while(按钮)被移除
  • 获取
    tileLayer
    中的组件列表
  • 遍历列表
  • 对于每个组件,检查它是否为
    JButton
  • 如果是,请检查其文本是否为您要查找的文本
  • 如果是,请将其从
    tillelayer
  • 实现上述算法的代码:

    java.awt.Component[]components=tileLayer.getComponents();
    for(java.awt.Component:components){
    if(javax.swing.JButton的组件实例){
    javax.swing.JButton按钮=(javax.swing.JButton)组件;
    String text=button.getText();
    if(text.equals(xCord+“,”+yCord){
    瓷砖层。移除(组件);
    }
    }
    }
    
    我建议您使用
    JButton
    引用维护一个
    列表。您可以在将
    JButton
    添加到UI时创建此列表。然后您可以使用此列表中的引用将其从UI中删除。

    请显示您尝试过的代码。还可以告诉我们您遇到了什么错误或在运行时发生了什么你的代码。我已经更新了我的问题,以便更清楚地了解我要实现的目标。你需要获取要删除的JButton的引用。你可以抓取子项并检查文本,或者你可以保留一个地图,以便按文本查找JButton。你需要将
    JButton
    引用传递到
    tileLayer.remove()
    ,而不是字符串。或者,维护一个JButton引用列表,这样就不必搜索。