<< Chapter < Page | Chapter >> Page > |
However, the code in Listing 27 goes beyond that. In particular, the code in Listing 27 creates a new object from which to get the data that is to be plotted.
In some cases, this may be required, depending on the nature of the class from which that object is instantiated. In other cases, it may not be necessary,and could slow down the re-plotting process.
If your class doesn't contain counters or other variables that need to be re-initialized whenever you re-plot, you could probably safely remove or disablethe code in Listing 27 . This will make the program run faster, although you may not be able to see the difference.
The remaining code in the event handler is shown in Listing 28 .
Listing 28. The remainder of the event handler. |
---|
//Set plotting parameters using
// data from the text fields.xMin = Double.parseDouble(
xMinTxt.getText());xMax = Double.parseDouble(
xMaxTxt.getText());yMin = Double.parseDouble(
yMinTxt.getText());yMax = Double.parseDouble(
yMaxTxt.getText());xTicInt = Double.parseDouble(
xTicIntTxt.getText());yTicInt = Double.parseDouble(
yTicIntTxt.getText());xCalcInc = Double.parseDouble(
xCalcIncTxt.getText());//Calculate new values for the
// length of the tic marks on the// axes. If too small on x-axis,
// a default value is used later.xTicLen = (yMax-yMin)/50;
yTicLen = (xMax-xMin)/50;//Repaint the plotting areas
for(int cnt = 0;cnt<number; cnt++){
canvases[cnt].repaint();
}//end for loop}//end actionPerformed |
This code is very straightforward. It performs the following actions:
Again, I will let the comments provide any necessary explanations.
That brings us to the most interesting part of the program, the extended Canvas class.
The class named MyCanvas is an inner class of the GUI class, which is used to override the paint method in each of the plotting areas shown in Figure 1 .
(Virtually all graphics operations in Java, other than those involving standard GUI components, are implemented by overriding the paint method on an object.)
The beginning of this class definition is shown in Listing 29 .
Listing 29. Beginning of the class named MyCanvas. |
---|
class MyCanvas extends Canvas{
int cnt;//object number//Factors to convert from double
// values to integer pixel locations.double xScale;
double yScale;MyCanvas(int cnt){//save obj number
this.cnt = cnt;}//end constructor |
Most of the calculations in this program are performed on data of type double . However, graphics operations are ultimately performed in terms integer numbers of pixels. The code in Listing 29 declares scale factors used later to convert from double values to integer pixel locations.
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?