@Override
    public void propertyChange(PropertyChangeEvent event) {
      String name = event.getPropertyName();
      if ("model".equals(name)) {
        BoundedRangeModel oldModel = (BoundedRangeModel)event.getOldValue();
        BoundedRangeModel newModel = (BoundedRangeModel)event.getNewValue();
        oldModel.removeChangeListener(this);
        newModel.addChangeListener(this);
      }
      if ("model".equals(name) || "orientation".equals(name) || "componentOrientation".equals(name)) {
        repaint();
      }
      if ("opaque".equals(name) || "visible".equals(name)) {
        if (myAnimationBehavior != null) {
          myAnimationBehavior.onReset();
        }
        myTrack.bounds.setBounds(0, 0, 0, 0);
        myThumb.bounds.setBounds(0, 0, 0, 0);
      }
    }
@Override
    public void propertyChange(PropertyChangeEvent event)