Computer Science 120
Introduction to Programming
Spring 2012, Siena College
MakeOvals Demo
A working demo of MakeOvals will appear below. Click inside the applet to interact with it.
MakeOvals BlueJ Project
Click here to download a BlueJ project for MakeOvals.
MakeOvals Source Code
The Java source code for MakeOvals is below. Click on a file name to download it.
import objectdraw.*; import java.awt.*; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.StringTokenizer; /** * MakeOvals example demonstrating the use of a * FileReader/BufferedReader for reading an input * file and a StringTokenizer to break it down * * Primary author: Sharon Small * Modified by: Jim Teresco * CSIS 120, Siena College Spring 2012 * * $Id$ */ public class MakeOvals extends WindowController { // when the mouse is clicked, read a file OvalInput.txt // that contains lines that each consist of 4 numbers // and a string. The numbers should be x, y, width, height // of a FilledOval to be drawn, and the string should be // its color (one of "red", "green", or "blue"). public void onMouseClick(Location point){ try { // a combination of a FileReader and a BufferedReader // is an alternative mechanism you may see for reading // files in Java. FileReader fr = new FileReader("OvalInput.txt"); BufferedReader bfr = new BufferedReader(fr); String inputLine; // the BufferedReader's readLine method will return // the next line of input if one exists, null if // the end of the input has been encountered. while((inputLine = bfr.readLine()) != null){ //System.out.println(inputLine); // the input String needs to be broken into the 5 // components that make it up so they can be passed // to the FilledOval constructor. StringTokenizer // is a mechanism that can do this. // This constructs a tokenizer that will return // parts of inputLine that are separated by // a string consisting of a space StringTokenizer st = new StringTokenizer(inputLine, " "); // now, we can get each successive String out of the // tokenizer by calling nextToken. This gives a String, // which we need as an int. Passing this String to // the constructor of the Integer is another way to // convert this String into an appropriate Integer. Integer x = new Integer(st.nextToken()); Integer y = new Integer(st.nextToken()); Integer width = new Integer(st.nextToken()); Integer height = new Integer(st.nextToken()); FilledOval inputOval = new FilledOval(x,y,width,height,canvas); setOvalColor(st.nextToken(), inputOval); } bfr.close(); } catch(IOException ioe){ System.out.println("Problem opening input file: " + ioe); } } public void setOvalColor(String colorInput, FilledOval inputOval){ if (colorInput.equals("red")){ inputOval.setColor(Color.red); } else if (colorInput.equals("green")){ inputOval.setColor(Color.green); } else if (colorInput.equals("blue")){ inputOval.setColor(Color.blue); } } }