Project 3: JavaFX Animation
Overview
In this project, you will create a program with a Graphical User
Interface (GUI) and animation built using JavaFX and Scene Builder.
Materials
Description
Write a Java Application. Your program can be anything you like, subject
to the following requirements
- You must incorporate a GUI built with JavaFX and SceneBuilder.
- At least one of the GUI components should have an event handler that
produces visible changes in the GUI.
- The program should include an interactive animation using the JavaFX AnimationTimer class that makes use of the
various Shape classes.
- The GUI should have some persistent state that is modeled by a class
of your own creation.
- The
Controller should have an instance of this class as one of its attributes.
- The class should represent an abstraction of the underlying data representation.
- The class should have a central data structure as one of its attributes, used in a manner pertinent to the application and suitable to the data structure.
- The central data structure can be an array, linked list,
PriorityQueue, ArrayList, Stack, or ArrayDeque.
- The program should do something useful or interesting. It need not
be complex, but it should be something that someone would
conceivably want to use.
Feel free to use the Java 21 API as a reference for any
piece of Java you might need.
Design Idea
To help you make progress on your project, you will need to submit a design idea
via email on or before April 6th. This design idea should be at least two sentences,
discussing your plan for the project. You will receive feedback and approval of your
design idea within 1 day.
Academic Integrity
As a reminder:
- You may consult online resources (Java tutorials, StackOverflow
questions, …), and you may even use snippets of code you find
there, but you must clearly cite them in your project, by adding
a comment with the URL of the resource you used along with a short
explanation of how you used it.
- You may discuss your project with other students in the class,
but you may not look at another student’s code, or share your
code with another student. If you need help debugging your code, see
an instructor or a TA.
Warning: Incorporating code from a generative AI coding assistant
is considered plagiarism and is not allowed.
What to Hand In
Submit a zip file containing your whole project via Teams, and an
evaluation document detailing the intent of your application, any unique
and interesting features in your application, and any joys or struggles
you encountered in creating your application.
Grading
To achieve Level 1 Complete, your project must
- incorporate a GUI built with JavaFX and SceneBuilder,
- be free of syntactic errors preventing compilation,
- include at least one GUI component with event handlers that visibly change the GUI,
- use an interactive animation using the JavaFX AnimationTimer that makes use of the various Shape classes, and
- the GUI has persistent state modeled by a pertinent class of the student’s creation, representing an abstraction of the underlying data representation.
- the
Controller has an instance of this class as an attribute.
- the class uses an array, linked list,
PriorityQueue, ArrayList, Stack, or ArrayDeque in a useful and pertinent way.
To achieve Level 2 Complete, your project must
- work as intented (no bugs or missing elements)
- be something that someone would conceivably want to use,
- exhibit some creativity and have some interesting features, and
- include an evaluation document that:
- adequately describes the project;
- discusses how data is incorporated into and retrieved from its central data structure;
- correctly states the asymptotic time complexity of each operation invoked on the central data structure;
- discusses why, in light of the time complexity of those operations, the data structure is a good choice for the application.