Friday, 17 October 2014

Simple JavaFX FXML Calculator Using Bindings

package application;
import javax.annotation.PostConstruct;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.NumberBinding;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.fxml.FXML;
import javafx.scene.control.TextField;
import javafx.util.StringConverter;
import javafx.util.converter.DoubleStringConverter;
public class CalculatorController{
@FXML
private TextField number1TextField;
@FXML
private TextField number2TextField;
@FXML
private TextField sumTextField;
@FXML
private TextField difTextField;
@FXML
private TextField multTextField;
@FXML
private TextField divTextField;
// private NumberBinding sum, dif, mult, div;
private DoubleProperty num1, num2, suma, dif, mult, div;
// @PostConstruct
@FXML
private void initialize(){
num1 = new SimpleDoubleProperty(1);
num2 = new SimpleDoubleProperty(2);
suma = new SimpleDoubleProperty();
dif = new SimpleDoubleProperty();
mult = new SimpleDoubleProperty();
div = new SimpleDoubleProperty();
suma.bind(num1.add(num2));
dif.bind(num1.subtract(num2));
mult.bind(num1.multiply(num2));
div.bind(num1.divide(num2));
StringConverter<? extends Number> converter = new DoubleStringConverter();
Bindings.bindBidirectional(number1TextField.textProperty(), num1, (StringConverter<Number>)converter);
Bindings.bindBidirectional(number2TextField.textProperty(), num2, (StringConverter<Number>)converter);
Bindings.bindBidirectional(sumTextField.textProperty(), suma, (StringConverter<Number>)converter);
Bindings.bindBidirectional(difTextField.textProperty(), dif, (StringConverter<Number>)converter);
Bindings.bindBidirectional(multTextField.textProperty(), mult, (StringConverter<Number>)converter);
Bindings.bindBidirectional(divTextField.textProperty(), div, (StringConverter<Number>)converter);
}
}

No comments: