In this lab you will extend your Circles project from the previous lab exercise to give you more practice with JavaFX, including layout, numeric controls, and adding listeners. (See the link to the previous Java 8 lab exercise in the menu to the left.)

When complete, your program should behave like the one in the accompanying video.

Below is a snapshot of the opening window. Note that the Circles button has been replaced by controls allowing the user to change the configuration of the display, including:

Unlike in the previous lab, here the circles appear upon launch of the application with their ScaleTransitions playing. Since the X and Y scale values are both initialized to zero, the circles initially appear "still."

When the user changes the value in any of these five controls, the circles launch and the animations (including the TranslateTransition that moves the circles from the lower right to their positions) restart, reflecting the new value.

Here is a snapshot showing the animation running after a number of the control values have been changed:

This section outlines the steps necessary to achieve the required behavior.
Remove the Circles button from the layout and replace it with a horizontally laid out group of controls: Make sure that each control is a private instance field, and that each field is initialized in the Circles constructor. Note: Replace the button from the previous lab with the five controls and run (test) the CirclesTest.java file to observe the look of the layout before giving the controls any behavior. Note:
The original Circles class used constants such as ROWS to represent features of the program such as the number of rows of circles rendered.

These features and the circle animation scaling factors must now be obtained from the GUI controls:

A change to any of the new controls must cause the same response that clicking the original Circles button did.

Currently, you add action to the button with:

You need to take the same action when any of the five controls' value property changes. For example:

This must be done in the Circles constructor. Note:

When your program is working correctly: Note the general Submission Policy in the menu at left.
Successful completion of: