<< Chapter < Page
  Digital signal processing - dsp     Page 18 / 25
Chapter >> Page >

The code in Listing 24 :

  • Creates the JPanel object, and sets its layout property to GridLayout.
  • Creates the requisite number of objects of the MyCanvas class (which extends Canvas), setting the background colors of the panels alternately towhite and gray.
  • Adds the MyCanvas objects to the cells in the grid. (Note that the constructor for each MyCanvas object receives an integer that specifies itsposition in the stack of MyCanvas objects. We will see how that information is used later.)

More routine construction code

The code in Listing 25 is simply more routine code required to:

  • Finish the construction of the GUI object
  • Set its location and size on the screen
  • Make it visible

Once again, I will let the comments serve as the explanation for this code.

Listing 25. More routine construction code.
//Add the sub-assemblies to the // frame. Set its location, size,// and title, and make it visible. getContentPane().add(ctlPnl,"South"); getContentPane().add(canvasPanel,"Center"); setBounds(0,0,frmWidth,frmHeight);setTitle("Graph01, " + "Copyright 2002, " +"Richard G. Baldwin"); setVisible(true);//Set to exit on X-button click setDefaultCloseOperation(EXIT_ON_CLOSE); //Get and save the size of the// plotting surface width = canvases[0].getWidth(); height = canvases[0].getHeight();

Force a repaint

As you will see later, the actual plotting behavior of this program is defined by the code in an overridden version of the paint method in the MyCanvas class. I will discuss that code in some detail later.

One way to cause the code in the overridden paint method to be executed is to call the repaint method on a reference to a MyCanvas object.

The code in Listing 26 calls the repaint method on each MyCanvas object in sequence, to guarantee that they are properly painted when the GUI object first becomes visible.

Listing 26. Force a repaint.
for(int cnt = 0; cnt<number; cnt++){ canvases[cnt].repaint(); }//end for loop}//end constructor

Similar code will be used again later to cause the graphs to be repainted each time the user presses the Graph button in the bottom right corner of Figure 1 .

End of the constructor

The code in Listing 26 also ends the constructor for the GUI object. When the constructor finishes execution, the GUI appears on the screen with all plotting areas properly painted.

Re-plotting the data

[link] shows the beginning of the event handler that is registered on the button to cause the functions to be re-plotted.

Beginning of the re-plot code.
public void actionPerformed( ActionEvent evt){//Re-instantiate the object that // provides the datatry{ if(args != null){data = (GraphIntfc01)Class. forName(args).newInstance();}else{ data = new junk();}//end else }catch(Exception e){//Known to be safe at this point. // Otherwise would have aborted// earlier. }//end catch

The purpose of the event handler is to cause the functions to be re-plotted after the user changes the plotting parameters.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  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.

Notification Switch

Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?

Ask