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

时间:2015-11-09 09:44:49

标签: java hyperlink javafx vbox

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

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

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

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

1 个答案:

答案 0 :(得分: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();