Creating the Desktop Version

The Forecaster project can also be written as a standalone desktop Java application, Forecast.java. To display the weather graph, as you see in Figure 10.2, you can create the Forecast class by extending the Frame class:

import java.io.*; 
import java.awt.*;
import java.net.*;
import java.awt.image.*;
import java.awt.event.*;

public class Forecast extends Frame
        .
        .
        .

This application will also need a way of asking the user his ZIP Code, so it'll use the OKCancelDialog class introduced in Chapter 2, “Slapshot! The Interactive Hockey Game”:

import java.io.*;
import java.awt.*;
import java.net.*;
import java.awt.image.*;
import java.awt.event.*;

public class Forecast extends Frame
{
    OkCancelDialog textDialog;
        .
        .
        .

The main method will call the Forecast constructor, where the real action takes place:

import java.io.*;
import java.awt.*;
import java.net.*;
import java.awt.image.*;
import java.awt.event.*;

public class Forecast extends Frame
{
    OkCancelDialog textDialog;

    public static void main(String[] args)
					{
					new Forecast();
					}
					public Forecast()
					{
					.
					.
					.
					}
}

In the Forecast constructor, the first order of business is to get the user's ZIP Code. This application stores that information in a file named zip.txt, so it checks to see if zip.txt already exists, and if so, it reads in the user's ZIP Code:

    public Forecast()
    {
        String zip ="";
					File zipFile = new File("zip.txt");
					try {
					if(zipFile.exists()){
					FileReader filereader = new FileReader("zip.txt");
					BufferedReader bufferedreader = new
					BufferedReader(filereader);
					zip = bufferedreader.readLine();
					}
        .
        .
        .
    }

If zip.txt doesn't exist, Forecast.java uses an OKCancelDialog object to ask the user for his ZIP Code and stores it in zip.txt:

    public Forecast()
    {
        String zip ="";
        File zipFile = new File("zip.txt");

        try {

            if(zipFile.exists()){
                FileReader filereader = new FileReader("zip.txt");
                BufferedReader bufferedreader = new
                    BufferedReader(filereader);
                zip = bufferedreader.readLine();
            }
            else
            {
                textDialog = new OkCancelDialog(this,
                    "Enter your five-digit zip code", true);
                textDialog.setVisible(true);
                zip = textDialog.data.trim();
                FileOutputStream fileoutputstream = new
                    FileOutputStream("zip.txt");
                fileoutputstream.write(zip.getBytes());
            }
        .
        .
        .
}

After you have the user's ZIP Code, you can fetch the weather data as before:

URL url = new URL
    ("http://www.srh.noaa.gov/zipcity.php?inputstring="
    + zip);

URLConnection urlconnection = url.openConnection();
.
.
.

After fetching the data and filling the hiTemperature and loTemperature arrays, you can create the forecast graph as in the JSP version of this project:

image = new BufferedImage(225, 201,
    BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();

    g.setColor(Color.white);
    g.fillRect(0, 0, 224, 201);
.
.
.

Finally, you can set up the window with a title and size, and you can make it visible:

setTitle("The Forecaster");

setResizable(false);

setSize(250, 240);

setVisible(true);

    this.addWindowListener(new WindowAdapter(){
        public void windowClosing(
            WindowEvent e){
                System.exit(0);
            }
        }
    );
.
.
.

Now that the image is ready, you can draw it in the paint method this way:

    public void paint(Graphics g)
    {
        if(image != null){
            g.drawImage(image, 10, 30, this);
        }
    }
}

And that completes Forecast.java, the desktop version of this application. To run it, just compile it and you're ready to go.

NOTE

Download the complete source code for the Forecaster project, forecast.jsp and Forecast.java, at the Sams website. If you have a JSP-enabled server around, you can use forecast.jsp on it as you'd use any other JSP page. If you want to run the desktop version, just compile Forecast.java and run it as you'd run any other Java program (making sure you have a connection to the Internet available).


..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.136.233.19