Getting acquainted with Swing

Lab 1: Getting acquainted with Swing

Step 0: Finish signing up for the class

  1. You should have gotten an email for your Moodle account (unless you are signed up with a address).
  2. Connect to the class Moodle to self-enroll.
  3. There is no step 3.


The goal of this assignment is to (re-)familiarize yourself with the Java Swing environment to create a GUI application. This should not be a difficult assignment; its purpose is to get you up to speed with Swing. Moreover, all subsequent labs will build on this first assignment, so it’s important to do this one right.

Note: You should avoid using any interface builder tools for this project. Such tools can be a very useful component of your developer’s toolbox, but the goal of this and the subsequent assignments is to master what is going on underneath the hood.


In these lab assignments and during your homework time, you will be creating an interactive photo browser, or Photothèque. The final version should allow the user to view, annotate, and organize a collection of photos.

In this first lab, we will create the basic skeleton of the application. Here, we will just be using the existing components provided by Swing. Later, we’ll extend the application with our own custom components.

You will probably find it useful to refer to the Java APIs when doing this assignment.


  • Create a skeleton application that:
    • Shows a new window (JFrame) when launched
    • Presents a menubar:
      • File
        • Import – should open a JFileChooser but do nothing with the choice for now
        • Delete – will eventually delete a photo.
        • Quit – exit the application
      • View – Contains a radio button for the view options
        • Photo viewer (default) – show one photo at a time
        • Browser – will eventually show a grid of thumbnails
        • Split mode – will eventually show a single photo with a “film strip” of its neighbors
    • Main portion of the window. An empty JPanel for now.
    • A JLabel at the bottom of the window to act as a status bar.
    • A toolbar at the left or top of the window. Include a JToggleButton to choose between different categories of photos (e.g. “Family,” “Vacation,” “School”, etc.)
    • The window should handle resizing correctly.
    • All unimplemented functionality should, for now, at least update the status bar.

Your application must behave appropriately when resized, moved, etc. Think about how the individual components resize to make sure they react reasonably for small or large windows. Think about minimum and maximum sizes.

There is also some flexibility in the design of your application. For example, you may use a different component than a JToggleButton if you think of a better interaction.


We’ll continue working on this assignment throughout the semester. To submit your skeleton, first export your project from Eclipse (File → Export… → General → Archive File). Then submit the generated archive using the class Moodle.

This assignment is based on one by Keith Edwards.