2015-04-17 2 views
1

У меня есть 3 ToggleButtons и GridPane, содержащий 3 ячейки.Как сделать эту привязку JavaFX умнее?

Дело 1: Только 1 ToggleButton выбрано, ожидается, что ячейка GridPane заполнит всю панель.

Случай 2: 2 из ToggleButtons выбраны, соответствующие 2 GridPane клетки, как ожидается, чтобы заполнить всю область с одинаково. (И та же логика, когда выбрано 3 ToggleButtons.)

В настоящее время я уже достиг своей цели с помощью следующей реализации, но то, что я хочу узнать, делает это умнее. Со словом smarter я подразумеваю реализацию чего-то более короткого, которое преобразует состояние ToggleButton в двойное значение (отменено => 0, выбрано => 100). Я не хочу реализовывать их, повторяя if clauses, но я пытаюсь реализовать что-то, что можно подключить до вызова .bind().

Текущая реализация для одного ToggleButton заключается в следующем:

myToggleButton.selectedProperty().addListener(new ChangeListener<Boolean>() { 
     @Override 
     public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { 
      if(newValue){ 
       myGridPane.getColumnConstraints().get(0).setPercentWidth(100); 
      }else{ 
       myGridPane.getColumnConstraints().get(0).setPercentWidth(0); 
      } 
     } 
    }); 

ответ

1

Да, вы можете, попробуйте выполнить следующие действия для связывания PercentWidth

ObservableBooleanValue condition = myToggleButton.selectedProperty(); 
NumberBinding number = Bindings.when(condition).then(100).otherwise(0); 
myGridPane.getColumnConstraints().get(0).percentWidthProperty.bind(number); 
+0

Отлично, спасибо! – bAris