0

是否可以在 VBox 容器中找到特定的超链接?

假设我有将超链接动态添加到 VBox 元素中的代码,但我不想两次添加相同的链接,最简单的方法在这里有什么想法吗?

我想到的是通过执行以下操作来搜索并查看超链接是否已经在 VBox 中:

myContainer.getChildren().forEach(node -> {
    if(node.getClass().getSimpleName().equals("Hyperlink") {
          Node n = node.getClass();
          // Do my stuff
    } 
});
4

1 回答 1

1

您的代码比较了类名(没有包),因此您无法以这种方式区分各种超链接。您可以做的是为每个人分配Hyperlink一个基于 URL 的 ID:

String url = ...
String urlToID = String.valueOf(url.hashCode());
...
// check if that urlToID is already present
boolean present = false;
for (Node child : myContainer.getChildren()) {
  if (child.getId().equals(urlToID)) {
    present = true;
    break;
}
if (!present) {
  Hyperlink link = ...
  link.setId(urlToID);
  myContainer.getChildren().add(link);
}

可以使用流进一步优化 for 循环,但我认为这更具可读性:

boolean present = myContainer.getChildren().stream().filter(node -> 
                      return node.getId().equals(urlToId);)
                  .findFirst().isPresent();
于 2015-11-09T09:54:58.917 回答