<< Chapter < Page | Chapter >> Page > |
The code in Listing 10 uses the value of displayType to make a decision and to instantiate a pair of objects from two ofsix different inner classes, each of which extends the class named Canvas . One of the objects in the pair is used to display the 3D surface according to a specified format. The other object inthe pair is used to display the calibration strip below the surface display.
Listing 10. Create an appropriate pair of Canvas objects. |
---|
Canvas surface = null;
Canvas scale = null;//Establish the format based on the value of// the parameter named display.
if(displayType == 0){//Create a type 0 Canvas object to draw the
// surface on. This is a Grayscale plot// display.
surface = new CanvasType0surface();//Create a Canvas object to draw the scale
// on for the Grayscale plot.scale = new CanvasType0scale();
}else if(displayType == 1){//Color Shift plot
surface = new CanvasType1surface();scale = new CanvasType1scale();
}else if(displayType == 2){//Color Contour plot.
surface = new CanvasType2surface();scale = new CanvasType2scale();
}//end if-else on display type |
The code in Listing 10 is straightforward and shouldn't require further explanation.
The interesting code is contained in the overridden paint method belonging to each of the six inner classes from which the pair of objectsis instantiated. I will explain those overridden paint methods later.
The default layout manager for a Frame object is BorderLayout . The code in Listing 11 adds one of the above-instantiated objects to the center location of the Frame , and adds the other object to the South location of the Frame . This produces the format with the surface plot above the calibration scale as shown by any of the imagesin Figure 1 through Figure 3 .
Listing 11. Add the Canvas objects to the Frame. |
---|
//Add the plotted surface to center of the
// Frameadd(BorderLayout.CENTER,surface);
//Add the scale to bottom of Frameadd(BorderLayout.SOUTH,scale);
//Cause the size of the Frame to be just// right to contain the two Canvas objects.
pack();//Set Frame cosmetics and make it visible.
setTitle("Copyright 2005 R.G.Baldwin");setVisible(true); |
After adding the two objects to the Frame , Listing 11 calls the pack method on the Frame to cause the size of the Frame to close in around the two objects.
Finally, Listing 11 sets the title on the Frame and makes the s visible.
Listing 12 registers an anonymous WindowListener object on the Frame to cause the program to terminate whenever the user clicks the X-button in the upper right corner of the Frame .
Listing 12. Register an anonymous WindowListener object. |
---|
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);
}//end windowClosing}//end class definition
);//end addWindowListener}//end constructor |
If you are unfamiliar with the use of anonymous inner classes, you can learn about such topics in my other publications.
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?