2015-11-09 33 views
0

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

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

我想的是什么搜索,看看超链接已经是垂直框内做类似:

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

回答

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(); 
+0

谢谢,它怎样才能更优化? – Mikael

+0

我添加了版本来初始化'present'与流。 – hotzst

相关问题