title: set() method doesn't work in JavaFX properties
body: <p>Recently I created a <code>JavaFX</code> application to demonstrate <code>properties</code>.</p>
  <ol>
  <li>First I created a class called 'Numbers'. Here is the code.</li>
  </ol>
  <pre><code>import javafx.beans.property.DoubleProperty;
  import javafx.beans.property.SimpleDoubleProperty;
  
  public class Numbers {
  
      private DoubleProperty number;
  
      public final double getNumber() {
          if (number != null)
              return number.get();
          return 0;
      }
  
      public final void setNumber(double number) {
          this.getDoubleProperty().set(number);
      }
  
      public final DoubleProperty getDoubleProperty(){
          if(number == null)
              return new SimpleDoubleProperty(0);
          return number;
      }
  }
  </code></pre>
  <ol start="2">
  <li>Then, in my <code>controller class</code>, I created an object for 'Numbers' class.</li>
  </ol>
  <pre><code>final Numbers num1 = new Numbers();
  </code></pre>
  <p>The rest of the code is like following.</p>
  <pre><code>import javafx.beans.value.ChangeListener;
  import javafx.beans.value.ObservableValue;
  import javafx.event.ActionEvent;
  import javafx.fxml.FXML;
  import javafx.fxml.Initializable;
  import javafx.scene.control.Label;
  
  import java.net.URL;
  import java.util.ResourceBundle;
  
  public class Controller implements Initializable {
  
      final Numbers num1 = new Numbers();
  
      @FXML
      private Label lblValue;
  
      @Override
      public void initialize(URL url, ResourceBundle resourceBundle) {
  
          num1.setNumber(0.5d);
  
          num1.getDoubleProperty().addListener(new ChangeListener&lt;Object&gt;() {
              @Override
              public void changed(ObservableValue&lt;? extends Object&gt; observableValue, Object oldValue, Object newValue) {
                  lblValue.setText(Double.toString(num1.getNumber()));
              }
          });
  
      }
  
      public void btnPlusClicked(ActionEvent event){
          num1.setNumber(num1.getNumber() + 1);
      }
  </code></pre>
  <p>But, text of the <code>Label</code> 'lblValue' doesn't change when the relevant button is clicked. I did some edits and found that the problem is not with <code>Action Listener</code>. I think the problem is with the method <code>btnPlusClicked(ActionEvent event)</code> or the <code>set()</code> method of the <code>property</code>. Please someone help me to clarify this scenario.</p>
  <p>P.S.:</p>
  <ul>
  <li>I followed a YouTube tutorial and he created this exact application. He made those methods and instances <code>final</code> and I don't know why. I just tried to imitate his piece of code. Someone please explain the significance of <code>final</code> keyword here.</li>
  <li>I can confirm that I successfully configured method <code>btnPlusClicked(ActionEvent event)</code> via Scene Builder also.</li>
  </ul>