findViewById (JavaFX 8)

  1. public static Set<Node> findByCssClass(Parent root, String cssClass) {
  2.     Set<Node> result = new HashSet<>(root.lookupAll(cssClass));
  3.     root.getChildrenUnmodifiable().stream()
  4.             .filter(n -> n instanceof Parent)
  5.             .map(Parent.class::cast) // map(n -> (Parent) n)
  6.             .forEach(n -> result.addAll(findByCssClass(n, cssClass)));
  7.     return result;
  8. }
  9.  
  10. @SuppressWarnings("unchecked")
  11. public static <T extends Node> T findById(Parent parent, String cssId) {
  12.     return (T) Optional.ofNullable(parent.lookup(cssId))
  13.             .orElse(parent.getChildrenUnmodifiable().stream()
  14.                     .filter(n -> n instanceof Parent)
  15.                     .map(n -> (T) findById((Parent) n, cssId))
  16.                     .filter(n -> n != null)
  17.                     .findFirst()
  18.                     .orElse(null));
  19. }
Использование:
  1. SplitPane editorPanel = Context.findById(mainPane, "#editorPanel");

Замечание
В контроллере в методе initialize этот код нужно вызывать так
 
  1. Platform.runLater(() -> {
  2.     SplitPane editorPanel = Context.findById(mainPane, "#editorPanel");
  3. };

Реклама

Мы в соцсетях

tw tg yt gt