The goal of this lab is to practice file I/O and to review designing windows.
In this lab we will revisit the Sprite program from lab 16. This time we will give the program the facility to save the current state of the simulation and reload it later.
The program should work as before but with two changes:
For your convenience, the GUI and File I/O handouts (part 1, part 2) from class are available online.
Follow these set-up instructions carefully.
Make a directory for this lab and cd
into it.
First, copy files from the course directory for this lab:
hg clone /cslab/class/csci235/lab18 cd lab18
Then copy from your lab16 directory
AddListener.java
and any other class that
you wrote (you should have written another action listener,
perhaps named something like OkListener.java
.
If you previously modified either Sprite.java
or
Sprites.java
, talk to the instructor about how to make
your version work with this lab.
If you did not do the Sprite lab, copy the files from
/cslab/class/csci235/lab18b/
.
However you got the listener class files, you probably want to add them to local Mercurial repository and commit them before you go further.
Remember that you will need to include -cp
simulation.jar:.
with both the javac
and
java
commands.
First, discuss with your partner how you can save/store a collection of Sprites. You'll need to decided on a file format/protocol.
SaveListener
Next, finish the SaveListener
class
so that its actionPerformed()
method
puts up a window asking for a filename. (The simplest way to do this
will be to provide a JTextField
in which the user can
type the filename. Keep it simple for now.)
This window should also have a button labelled "Ok" or
the equivalent.
Then write another action listener class which will close that window and do the actual saving. Be sure to catch error cases. It is OK if you print any error messages to the terminal.
Finally, in the file Sprites.java
, find the
portion of code that will load a configuration from a file
and fill-in what's missing.
Turn in your source files as lab18
with the command
/cslab/class/csci235/bin/handin lab18 *.java
If you have time, here are instructions for using dialog classes to select a file and to display messages. If you want to try that, be sure that you first commit your changes to your repository before you start. Be sure you turn in what have done before you go on.