Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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
javafx从VBox中删除特定节点_Javafx - Fatal编程技术网

javafx从VBox中删除特定节点

javafx从VBox中删除特定节点,javafx,Javafx,我有以下方法: CreateStrip createStrip = new CreateStrip(input); depBox.getChildren().add(createStrip.getStripGrid()); depBox是一个VBox。getStripGrid()返回一个GridPane。 CreateStrip也有此方法: public String getNameStrip() { return input.getNameStrip();} 在程序的生命周期中,depBo

我有以下方法:

CreateStrip createStrip = new CreateStrip(input);
depBox.getChildren().add(createStrip.getStripGrid());
depBox是一个VBox。getStripGrid()返回一个GridPane。 CreateStrip也有此方法:

public String getNameStrip() { return input.getNameStrip();}
在程序的生命周期中,depBox会获得许多GridPane,每个GridPane都有不同的名称。 有时我需要从depBox中删除与.getNameStrip()匹配的特定GridPane。 我试过:

    for (Node node: depBox.getChildren()) {

//TODO REMOVE GRIDPANE CONTAIN THE NAME THAT MATCH WITH THE MESSAGE RECEIVED..
            }
但我不知道如何设置匹配控件。

步骤1: 将数据附加到允许您识别要删除的数据的
网格窗格

您可以通过使用或(我将在下面的代码段中执行)来实现这一点

创建
网格窗格

GridPane gp = createStrip.getStripGrid();
gp.getProperties().put(NAME_KEY, createStrip);
depBox.getChildren().add(gp);
步骤2: 使用这些信息删除相应的
网格窗格
searchName
是标识要删除的
GridPane
字符串(用于检查与
getNameStrip()
是否相等):

根据您的
CreateStrip
类,可能不需要将其实例添加为属性。如果这是一家工厂,这甚至可能不是一件正确的事情,但我认为你得到了这个想法

可供替代的
您还可以为
节点的
id
属性指定一个值,并使用这些值使用
节点查找来识别正确的节点。然而,这些需要是唯一的并且是有效的css id,但是您可以使用
映射
从消息映射到
id

我如何将我的名称_键定义为静态最终对象名称_键=新对象()?我收到一个字符串,所以我的例子中的对象应该是静态的最终对象“String”=new object()…但我不能这样做。还有一件事,searchName.equals它意味着什么?@Daniele_r81:
NAME_KEY
GridPane
s的
属性映射的键
searchName
只是要搜索的
字符串的占位符。
等于
是什么意思?请看这里:真的很抱歉,但我之前没有收到……我会尽快尝试,并给你我的反馈。谢谢。是的,很有效……非常感谢。我可以使用此方法更新gridPane中的某些文件吗?
// use object not equal to any other object as key (i.e. equals uses reference equality)
static final Object NAME_KEY = new Object(); 
depBox.getChildren().removeIf(c -> {
     CreateStrip strip = (CreateStrip) c.getProperties().get(NAME_KEY);
     return strip != null && searchName.equals(strip.getNameStrip());
});