This page is optimized for mobile devices, if you would prefer the desktop version just click here

3.1 Java1489-plotting 3d surfaces using java  (Page 15/24)

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

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.

Add the Canvas objects to the Frame

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);

Call the pack method and set the title

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.

Register an anonymous WindowListener object

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.

<< Chapter < Page Page > Chapter >>

Read also:

OpenStax, Digital signal processing - dsp. OpenStax CNX. Jan 06, 2016 Download for free at https://legacy.cnx.org/content/col11642/1.38
Google Play and the Google Play logo are trademarks of Google Inc.
Jobilize.com uses cookies to ensure that you get the best experience. By continuing to use Jobilize.com web-site, you agree to the Terms of Use and Privacy Policy.