Java 类javafx.beans.binding.ObjectBinding 实例源码

项目:tornadofx-controls    文件:Fieldset.java   
private void syncOrientationState() {
    // Apply pseudo classes when orientation changes
    labelPosition.addListener((observable, oldValue, newValue) -> {
        if (newValue == HORIZONTAL) {
            pseudoClassStateChanged(VERTICAL_PSEUDOCLASS_STATE, false);
            pseudoClassStateChanged(HORIZONTAL_PSEUDOCLASS_STATE, true);
        } else {
            pseudoClassStateChanged(HORIZONTAL_PSEUDOCLASS_STATE, false);
            pseudoClassStateChanged(VERTICAL_PSEUDOCLASS_STATE, true);
        }
    });

    // Setup listeneres for wrapping
    wrapWidth.addListener(((observable, oldValue, newValue) -> {
        ObjectBinding<Orientation> responsiveOrientation =
                createObjectBinding(() -> getWidth() < newValue ? VERTICAL : HORIZONTAL, widthProperty());

        if (labelPositionProperty().isBound())
            labelPositionProperty().unbind();

        labelPositionProperty().bind(responsiveOrientation);
    }));
}
项目:Capstone2016    文件:CatchSelectionDialog.java   
/**
 * Constructs one of the selection buttons for the catch selection screen.
 * Binds the catch type displayed on this button to {@link CatchType#EMPTY} if place is 0, or to one of the top three catches for the trapline if place is between 1 and 3.
 * @param place The button placement (ranges from 0 to 3)
 * @return The catch selection button
 */
private Button makeOptionButton (int place) {
    ObjectBinding<CatchType> catchType;
    if (place == 0) {
        catchType = Bindings.createObjectBinding(() -> CatchType.EMPTY);
    } else {
        catchType = Bindings.valueAt(catchTypes, place-1);
    }
    Button button = new Button();
    button.getStyleClass().add("catch-select-option");

    addBackgroundLoader(button, catchType);

    button.textProperty().bind(Bindings.createStringBinding(() -> catchType.get() == null ? "..." : catchType.get().getName(), catchType));
    button.setMaxSize(1000, 1000);
    //button.getStyleClass().add("large-button");
    GridPane.setConstraints(button, place % 2, place > 1 ? 2 : 0);
    GridPane.setHgrow(button, Priority.ALWAYS);
    GridPane.setVgrow(button, Priority.ALWAYS);
    button.setOnAction(evt -> {
        LOG.log(Level.FINE, "Selected catch: "+catchType.get());
        setResult(new Catch(catchType.get()));
        hide();
    });
    return button;
}
项目:LoliXL    文件:ItemTile.java   
public ItemTile(DisplayableItem item) {
    Objects.requireNonNull(item);
    getStyleClass().add(CSS_CLASS_ITEM_TILE);

    textProperty().bind(item.getLocalizedName());

    ImageView iconView = new ImageView();
    iconView.imageProperty().bind(item.getIcon());
    iconView.fitWidthProperty().bind(iconWidthProperty);
    iconView.fitHeightProperty().bind(iconHeightProperty);
    graphicProperty().bind(new ObjectBinding<Node>() {

        {
            bind(iconView.imageProperty());
        }

        @Override
        protected Node computeValue() {
            if (iconView.imageProperty().get() == null) {
                return null;
            } else {
                return iconView;
            }
        }
    });
}
项目:LoliXL    文件:Tile.java   
static PerspectiveTransform computeEnd(ObservableValue<? extends Number> x, ObservableValue<? extends Number> y, ObservableValue<? extends Number> width, ObservableValue<? extends Number> height, ObservableValue<Pos> noEffectPos) {
    double ratioX = x.getValue().doubleValue() / width.getValue().doubleValue() * 3;
    double ratioY = y.getValue().doubleValue() / height.getValue().doubleValue() * 3;
    ObjectBinding<Perspective> perspective = Bindings.createObjectBinding(() -> new Perspective(ratioX, ratioY, width.getValue().doubleValue(), height.getValue().doubleValue(), noEffectPos.getValue()), width, height, noEffectPos);
    PerspectiveTransform effect = new PerspectiveTransform();
    effect.ulxProperty().bind(createPerspectivePropertyBinding(p -> p.ulx, perspective));
    effect.ulyProperty().bind(createPerspectivePropertyBinding(p -> p.uly, perspective));
    effect.urxProperty().bind(createPerspectivePropertyBinding(p -> p.urx, perspective));
    effect.uryProperty().bind(createPerspectivePropertyBinding(p -> p.ury, perspective));
    effect.lrxProperty().bind(createPerspectivePropertyBinding(p -> p.lrx, perspective));
    effect.lryProperty().bind(createPerspectivePropertyBinding(p -> p.lry, perspective));
    effect.llxProperty().bind(createPerspectivePropertyBinding(p -> p.llx, perspective));
    effect.llyProperty().bind(createPerspectivePropertyBinding(p -> p.lly, perspective));
    return effect;

}
项目:VocabHunter    文件:WordStateHandler.java   
public void initialise(final Button buttonUnseen, final Button buttonKnown, final Button buttonUnknown, final SessionModel sessionModel,
                        final ObjectBinding<WordState> wordStateProperty, final Runnable nextWordSelector) {
    this.sessionModel = sessionModel;
    this.nextWordSelector = nextWordSelector;

    SimpleBooleanProperty editableProperty = sessionModel.editableProperty();
    BooleanBinding resettableProperty = editableProperty.and(notEqual(WordState.UNSEEN, wordStateProperty));

    buttonUnseen.visibleProperty().bind(resettableProperty);
    buttonKnown.visibleProperty().bind(editableProperty);
    buttonUnknown.visibleProperty().bind(editableProperty);

    buttonUnseen.setOnAction(e -> processResponse(WordState.UNSEEN, false));
    buttonKnown.setOnAction(e -> processResponse(WordState.KNOWN, true));
    buttonUnknown.setOnAction(e -> processResponse(WordState.UNKNOWN, true));
}
项目:clarity-analyzer    文件:PointingHeroIcon.java   
public PointingHeroIcon(ObservableEntity oe) {
    super(oe);

    shape = new Polygon(
        0, -200, -120, 200, 120, 200
    );

    shape.fillProperty().bind(getPlayerColor());

    ObjectBinding<Vector> angRotVector = oe.getPropertyBinding(Vector.class, "CBodyComponent.m_angRotation", null);
    DoubleBinding angRot = Bindings.createDoubleBinding(() -> (double) angRotVector.get().getElement(1), angRotVector);

    IntegerBinding angDiff = Bindings.selectInteger(oe.getPropertyBinding(Integer.class, "m_anglediff", 0));

    shape.translateXProperty().bind(getMapX());
    shape.translateYProperty().bind(getMapY());
    shape.rotateProperty().bind(getBaseAngle().add(angRot).add(angDiff));
}
项目:ISAAC    文件:ClassifierView.java   
/**
 * Perform cycle check and classification.
 * @throws Exception if anything goes wrong
 */
public void doClassify() throws Exception {

  // Make sure in application thread.
  FxUtils.checkFxUserThread();

  // Update UI.
  rootName.setText(OTFUtility.getConPrefTerm(Taxonomies.SNOMED.getLenient()
      .getNid()));

  // Create classifier
  classifier = new SnomedSnorocketClassifier();

  // Do work in background.
  task = new ClassifyTask();

  // Bind cursor to task state.
  ObjectBinding<Cursor> cursorBinding =
      Bindings.when(task.runningProperty()).then(Cursor.WAIT)
          .otherwise(Cursor.DEFAULT);
  this.getScene().cursorProperty().bind(cursorBinding);

  taskThread = new Thread(task, "classify");
  taskThread.setDaemon(true);
  taskThread.start();
}
项目:Omoikane    文件:VentaModel.java   
public VentaModel() {
    subtotal        = new ObjectBinding<BigDecimal>() {
        @Override
        protected BigDecimal computeValue() {
            BigDecimal result = BigDecimal.ZERO;
            for(PartidaModel pm : partidas)
                result.add(pm.subtotalProperty().get());

            return result;
        }
    };

    montoDescuentos = new SimpleObjectProperty<>(BigDecimal.ZERO);
    montoImpuestos  = new SimpleObjectProperty<>(BigDecimal.ZERO);
    total           = new SimpleObjectProperty<>(BigDecimal.ZERO);

    cliente         = new SimpleObjectProperty<>();

    partidas        = FXCollections.observableArrayList();
    partidas.addListener(new MyListListener());
}
项目:HotaruFX    文件:LibraryItem.java   
private void init() {
    setMnemonicParsing(false);
    tooltipProperty().bind(new ObjectBinding<Tooltip>() {
        { bind(code); }
        @Override
        protected Tooltip computeValue() {
            return new Tooltip(code.get());
        }
    });
}
项目:JavaFX-EX    文件:BeanConvertUtil.java   
public static <T> ObjectBinding<T> toObjectBinding(ObservableValue<T> ov) {
  return new ObjectBinding<T>() {
    {
      bind(ov);
    }

    @Override
    protected T computeValue() {
      return ov.getValue();
    }
  };
}
项目:fxexperience2    文件:ColorPickerTool.java   
public ColorPickerTool(Color startColor) {
    setMinWidth(USE_PREF_SIZE);
    setMaxWidth(Double.MAX_VALUE);
    setAlignment(Pos.BASELINE_LEFT);
    getStyleClass().add("color-picker");
    setTextFill(Color.WHITE);

    color.set(startColor);
    textProperty().bind(new StringBinding() {
        { bind(color); }
        @Override protected String computeValue() {
            return getWebColor(getColor());
        }
    });
    setOnAction((ActionEvent arg0) -> {
        if (popover == null) {
            popover = new ColorPickerPopover();
            popover.colorProperty().addListener((ObservableValue<? extends Color> arg1, Color arg2, Color newValue) -> {
                setColor(newValue);
            });
        }
        if (popover.isShowing()) {
            popover.hide();
        } else {
            popover.setColor(getColor());
            popover.show(ColorPickerTool.this);
        }
    });
    Rectangle colorRect = new Rectangle();
    colorRect.setWidth(16);
    colorRect.setHeight(16);
    colorRect.fillProperty().bind(new ObjectBinding<Paint>() { { bind(color); }
        @Override protected Paint computeValue() {
            return getColor();
        }
    });
    colorRect.setEffect(new DropShadow(3, 0, 1, Color.rgb(0, 0, 0, 0.8)));
    setGraphic(colorRect);
}
项目:fx-animation-editor    文件:TimelineSceneSynchronizer.java   
private ObjectBinding<Paint> getColor(AnimatableField field, NodeModel node, KeyValueModel keyValue, KeyFrameModel keyFrame) {
    ObjectBinding<Paint> currentValue = ModelFunctions.toPaintBinding(keyValue.valueProperty(), Color.TRANSPARENT);
    KeyFrameModel earlier = getEarlierKeyFrameWithNonNullValue(field, node, keyFrame);
    KeyFrameModel later = getLaterKeyFrameWithNonNullValue(field, node, keyFrame);

    if (earlier != null) {
        DoubleProperty earlierTime = earlier.absoluteTimeProperty();
        Color earlierValue = (Color) earlier.getKeyValues().get(node).get(field).getValue();

        if (later != null) {
            DoubleProperty laterTime = later.absoluteTimeProperty();
            Color laterValue = (Color) later.getKeyValues().get(node).get(field).getValue();

            ObjectBinding<Paint> interpolated = Bindings.createObjectBinding(() -> {
                double timeFraction = (keyFrame.getAbsoluteTime() - earlierTime.get()) / (laterTime.get() - earlierTime.get());
                double interpolatorFactor = later.getKeyValues().get(node).get(field).getInterpolator().curve(timeFraction);
                return earlierValue.interpolate(laterValue, interpolatorFactor);
            }, earlierTime, laterTime, keyFrame.absoluteTimeProperty());

            return Bindings.when(keyValue.valueProperty().isNotNull()).then(currentValue).otherwise(interpolated);
        } else {
            return Bindings.when(keyValue.valueProperty().isNotNull()).then(currentValue).otherwise(earlierValue);
        }
    } else {
        return currentValue;
    }
}
项目:JavaFX-EX    文件:BeanConvertUtil.java   
public static <T> ObjectBinding<T> toObjectBinding(ObservableValue<T> ov) {
  return new ObjectBinding<T>() {
    {
      bind(ov);
    }

    @Override
    protected T computeValue() {
      return ov.getValue();
    }
  };
}
项目:VocabHunter    文件:MainWordHandler.java   
public MainWordHandler(final Label mainWord, final Label useCountLabel, final Pane mainWordPane, final SessionModel sessionModel, final ObjectBinding<WordState> wordStateProperty) {
    this.mainWord = mainWord;
    this.useCountLabel = useCountLabel;
    this.mainWordPane = mainWordPane;
    this.sessionModel = sessionModel;
    this.wordStateProperty = wordStateProperty;
}
项目:clarity-analyzer    文件:EntityIcon.java   
protected ObjectBinding<Paint> getTeamColor() {
    IntegerBinding teamNum = getTeamNum();
    return Bindings.createObjectBinding(() -> {
        int n = teamNum.get();
        switch (n) {
            case 2:
                return Color.GREEN;
            case 3:
                return Color.RED;
            default:
                return Color.GRAY;
        }
    }, teamNum);
}
项目:clarity-analyzer    文件:EntityIcon.java   
protected ObjectBinding<Paint> getPlayerColor() {
    IntegerBinding playerId = getPlayerId();
    return Bindings.createObjectBinding(() -> {
        int n = playerId.get();
        if (n < 0 || n > 9) {
            return Color.WHITE;
        } else {
            return PLAYER_COLORS[n];
        }
    }, playerId);
}
项目:clarity-analyzer    文件:ObservableEntity.java   
public <T> ObjectBinding<T> getPropertyBinding(Class<T> propertyClass, String property, T defaultValue) {
    FieldPath fp = entity.getDtClass().getFieldPathForName(property);
    if (fp == null) {
        return Bindings.createObjectBinding(() -> defaultValue);
    } else {
        ObjectBinding<T> ob = getPropertyForFieldPath(fp).rawProperty();
        return Bindings.createObjectBinding(() -> ob.get(), ob);
    }
}
项目:HdrHistogramVisualizer    文件:VisualizerPresenter.java   
void initializeIntervalChartAxes() {
    final NumberAxis xAxis = (NumberAxis) intervalChart.getXAxis();
    xAxis.setForceZeroInRange(false);

    // Bind X Tick label formatter to choice-box
    intervalXTickLabel.getItems().addAll(IntervalTickFormatter.values());
    intervalXTickLabel.getSelectionModel().select(0);
    ObjectBinding<StringConverter<Number>> intervalXLabelConverter = Bindings.createObjectBinding(
            () -> intervalXTickLabel.getSelectionModel().getSelectedItem().getConverter(),
            intervalXTickLabel.getSelectionModel().selectedItemProperty()
    );
    xAxis.tickLabelFormatterProperty().bind(intervalXLabelConverter);

}
项目:speedment    文件:ForeignKeyColumnProperty.java   
public final ObjectBinding<TableProperty> foreignTableProperty() {
    return createObjectBinding(
        () -> ForeignKeyColumn.super.findForeignTable()
            .map(TableProperty.class::cast)
            .orElse(null), 
        foreignTableNameProperty()
    );
}
项目:speedment    文件:ForeignKeyColumnProperty.java   
public final ObjectBinding<ColumnProperty> foreignColumnProperty() {
    return createObjectBinding(
        () -> ForeignKeyColumn.super.findForeignColumn()
            .map(ColumnProperty.class::cast)
            .orElse(null), 
        foreignTableNameProperty(),
        foreignColumnNameProperty()
    );
}
项目:ISAAC    文件:ExportView.java   
/**
 * Perform an export according the specifed parameters.
 *
 * @param exportType the export type
 * @param pathNid the path nid
 * @param folderName the file name
 * @param zipChecked the flag indicating whether to compress output
 */
public void doExport(ExportType exportType, int pathNid,
  final String folderName, boolean zipChecked) {
  Preconditions.checkNotNull(exportType);
  Preconditions.checkNotNull(folderName);

  // Make sure in application thread.
  FxUtils.checkFxUserThread();

  // Update UI.
  exportTypeLabel.setText(exportType.getDisplayName());
  pathNameLabel.setText(OTFUtility.getConPrefTerm(pathNid));
  folderNameLabel.setText(folderName);

  File folder = new File(folderName);
  // Inject into an ExportFileHandler.
  exportFileHandler =
      new ExportFileHandler(pathNid, exportType, folder, zipChecked);

  // Do work in background.
  task = new ExporterTask(exportFileHandler);

  // Bind cursor to task state.
  ObjectBinding<Cursor> cursorBinding =
      Bindings.when(task.runningProperty()).then(Cursor.WAIT)
          .otherwise(Cursor.DEFAULT);
  this.getScene().cursorProperty().bind(cursorBinding);

  taskThread = new Thread(task, "Exporter_" + exportType);
  taskThread.setDaemon(true);
  taskThread.start();
}
项目:ISAAC    文件:InformationModelDetailsDialogController.java   
private void scheduleTask(InformationModel infoModel, Task<String> task) {
  // Bind cursor to task state.
  ObjectBinding<Cursor> cursorBinding =
      Bindings.when(task.runningProperty()).then(Cursor.WAIT)
          .otherwise(Cursor.DEFAULT);
  this.stage.getScene().cursorProperty().bind(cursorBinding);

  // Bind progress indicator to task state.
  modelXmlProgress.visibleProperty().bind(task.runningProperty());

  Thread t = new Thread(task, "Display_" + infoModel.getName());
  t.setDaemon(true);
  t.start();
}
项目:assertj-javafx    文件:ObjectTest.java   
@Test
public void testObjectBinding(){
    ObjectBinding<TestPerson> actual = Bindings.createObjectBinding(()-> person);

    assertThat(actual).hasValue(person);

    assertThat(actual).hasSameValue(actual);
}
项目:honest-profiler    文件:ContextMenuUtil.java   
/**
 * Helper method which binds the dynamical computation of a {@link ContextMenu} to a {@link TreeItem}
 * {@link Property}.
 * <p>
 *
 * @param <T> the type of the item contained in the {@link TreeItem}
 * @param appCtx the {@link ApplicationContext} of the application
 * @param ctxMenuProperty the {@link ContextMenu} {@link Property} of the {@link TreeTableCell} or {@link TreeCell}
 * @param treeItemProperty the {@link TreeItem} {@link Property}
 */
private static <T> void bindContextMenu(ApplicationContext appCtx,
    ObjectProperty<ContextMenu> ctxMenuProperty,
    ReadOnlyObjectProperty<TreeItem<T>> treeItemProperty)
{
    ctxMenuProperty.bind(new ObjectBinding<ContextMenu>()
    {
        {
            // Fire when the encapsulated TreeItem instance changes
            super.bind(treeItemProperty);
        }

        @Override
        protected ContextMenu computeValue()
        {
            // No TreeItemProperty == no ContextMenu
            if (treeItemProperty == null)
            {
                return null;
            }

            TreeItem<?> treeItem = treeItemProperty.get();

            // No or Empty TreeItem == no ContextMenu, otherwise construct the menu.
            return (treeItem == null || treeItem.getChildren().size() == 0) ? null
                : getContextMenu(appCtx, treeItem);
        }
    });
}
项目:advanced-bindings    文件:ObjectBindingsTest.java   
@Test
public void testMap(){
    ObjectProperty<Person> selectedPerson = new SimpleObjectProperty<>();

    ObjectBinding<String> name = ObjectBindings.map(selectedPerson, Person::getName);
    assertThat(name).hasNullValue();

    selectedPerson.set(obi);
    assertThat(name).hasValue("Obi-Wan");

    selectedPerson.set(luke);
    assertThat(name).hasValue("Luke");
}
项目:advanced-bindings    文件:ObjectBindingsTest.java   
@Test
public void testMapWithDefaultValue(){
    ObjectProperty<Person> selectedPerson = new SimpleObjectProperty<>();

    ObjectBinding<String> name = ObjectBindings.map(selectedPerson, Person::getName, "empty");
    assertThat(name).hasValue("empty");
    selectedPerson.set(obi);
    assertThat(name).hasValue("Obi-Wan");

    selectedPerson.set(luke);
    assertThat(name).hasValue("Luke");
}
项目:advanced-bindings    文件:ObjectBindingsTest.java   
@Test
public void testCastBinding2(){
    ObjectProperty<Double> doubleProperty = new SimpleObjectProperty<>(10.0);

    ObjectBinding<Number> numberBinding = ObjectBindings.cast(doubleProperty);

    assertThat(numberBinding).hasValue(10.0);

    doubleProperty.setValue(12.34);
    assertThat(numberBinding).hasValue(12.34);
}
项目:junit    文件:TestResultsController.java   
public ObjectBinding<ImageView> selectedRun_resultImageView() {
    return Bindings.createObjectBinding(new Callable<ImageView>() {
        @Override
        public ImageView call() throws Exception {
            return new ImageView(selectedRun_resultImage().get());
        }
    }, selectedRunProperty());
}
项目:junit    文件:TestBatchModel.java   
public ObjectBinding<Date> endDateProperty() {
    return Bindings.createObjectBinding(new Callable<Date>() {
        @Override
        public Date call() throws Exception {
            return getBatch().getEndDate();
        }
    }, isRunningProperty());
}
项目:junit    文件:TestBatchModel.java   
public ObjectBinding<TestBatchState> stateProperty() {
    return Bindings.createObjectBinding(new Callable<TestBatchState>() {
        @Override
        public TestBatchState call() throws Exception {
            if (isRunning()) {
                return TestBatchState.RUNNING;
            } else if (isSuccessful()) {
                return TestBatchState.SUCCESS;
            } else {
                return TestBatchState.FAILURE;
            }
        }
    }, isRunningProperty(), isSuccessfulProperty());
}
项目:fx-animation-editor    文件:ModelFunctions.java   
public static ObjectBinding<Paint> toPaintBinding(ObjectProperty<Object> property, Paint fallback) {
    return Bindings.createObjectBinding(() -> (property.get() instanceof Paint ? (Paint) property.get() : fallback), property);
}
项目:fx-animation-editor    文件:ChainedBindingFunctions.java   
public <T> ObjectBinding<T> selectObject(Function<S, ? extends ObservableValue<T>> childPropertyAccessor) {
    return new ChainBinding<>(rootProperty, childPropertyAccessor);
}
项目:fx-animation-editor    文件:ChainedBindingFunctions.java   
public <T> ObjectBinding<T> mapToObject(Function<S, ? extends T> childPropertyAccessor) {
    return new MappedBinding<>(rootProperty, childPropertyAccessor);
}
项目:fx-animation-editor    文件:ChainedBindingFunctions.java   
IntegerBindingAdapter(ObjectBinding<Number> integerObjectBinding, int defaultValue) {
    this.integerObjectBinding = integerObjectBinding;
    this.defaultValue = defaultValue;

    bind(integerObjectBinding);
}
项目:fx-animation-editor    文件:ChainedBindingFunctions.java   
LongBindingAdapter(ObjectBinding<Number> longObjectBinding, long defaultValue) {
    this.longObjectBinding = longObjectBinding;
    this.defaultValue = defaultValue;

    bind(longObjectBinding);
}
项目:fx-animation-editor    文件:ChainedBindingFunctions.java   
FloatBindingAdapter(ObjectBinding<Number> floatObjectBinding, float defaultValue) {
    this.floatObjectBinding = floatObjectBinding;
    this.defaultValue = defaultValue;

    bind(floatObjectBinding);
}
项目:fx-animation-editor    文件:ChainedBindingFunctions.java   
DoubleBindingAdapter(ObjectBinding<Number> doubleObjectBinding, double defaultValue) {
    this.doubleObjectBinding = doubleObjectBinding;
    this.defaultValue = defaultValue;

    bind(doubleObjectBinding);
}
项目:fx-animation-editor    文件:ChainedBindingFunctions.java   
BooleanBindingAdapter(ObjectBinding<Boolean> booleanObjectBinding, boolean defaultValue) {
    this.booleanObjectBinding = booleanObjectBinding;
    this.defaultValue = defaultValue;

    bind(booleanObjectBinding);
}
项目:fx-animation-editor    文件:ChainedBindingFunctions.java   
StringBindingAdapter(ObjectBinding<String> stringObjectBinding, String defaultValue) {
    this.stringObjectBinding = stringObjectBinding;
    this.defaultValue = defaultValue;

    bind(stringObjectBinding);
}
项目:Gargoyle    文件:FilteredTreeItemExam.java   
@Override
    public void start(Stage primaryStage) throws Exception {

        FilterableTreeItem<String> filterableTreeItem = new FilterableTreeItem<>("");
        filterableTreeItem.setExpanded(true);
        TreeView<String> treeView = new TreeView<>(filterableTreeItem);
        treeView.setShowRoot(false);
        treeView.setRoot(filterableTreeItem);

        BorderPane borderPane = new BorderPane(treeView);
        TextField value = new TextField();
        value.textProperty().addListener((oba, oldval, newval) -> {
            Callable<TreeItemPredicate<String>> func = () -> {
                Predicate<String> predicate = str -> str.indexOf(newval) >= 0;
                return TreeItemPredicate.<String> create(predicate);
            };
            ObjectBinding<TreeItemPredicate<String>> createObjectBinding = Bindings.createObjectBinding(func, hide);
            filterableTreeItem.predicateProperty().bind(createObjectBinding);
        });

        borderPane.setTop(value);
        Scene scene = new Scene(borderPane);

        primaryStage.setScene(scene);

        primaryStage.show();

        FilterableTreeItem<String> e = new FilterableTreeItem<>("ABC");
//      e.getChildren().add(new FilterableTreeItem<>("DEF"));
//      e.getChildren().add(new FilterableTreeItem<>("김aa"));
//      e.getChildren().add(new FilterableTreeItem<>("김bb"));
//      e.getChildren().add(new FilterableTreeItem<>("김cc"));
//      filterableTreeItem.getChildren().add(e);
//      filterableTreeItem.getChildren().add(new FilterableTreeItem<>("DEF"));
//      filterableTreeItem.getChildren().add(new FilterableTreeItem<>("김DD"));
//
        e.getSourceChildren().add(new FilterableTreeItem<>("DEF"));
        e.getSourceChildren().add(new FilterableTreeItem<>("김aa"));
        e.getSourceChildren().add(new FilterableTreeItem<>("김bb"));
        e.getSourceChildren().add(new FilterableTreeItem<>("김cc"));
        filterableTreeItem.getSourceChildren().add(e);
        filterableTreeItem.getSourceChildren().add(new FilterableTreeItem<>("DEF"));
        filterableTreeItem.getSourceChildren().add(new FilterableTreeItem<>("김DD"));

        // filterableTreeItem.predicateProperty()
        // .bind(Bindings.createObjectBinding(() ->
        // TreeItemPredicate<String>.create(str -> str.indexOf("김") >= 0),
        // hide));

    }