Name ______________________________
This is part of the code to implement the GUI that was used with the Rainfall program. The problem is that there is no button to calculate the average. Add the button to the layout, and create a listener for the button. Be sure to check for values that aren't correctly converted to double. You are free to make layout changes if you wish.
Changes can be indicated as insertions, or the program can be rewritten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
// RainfallGUI.java - Provides a GUI interface to the RainfallStats class.
// Fred Swartz - 2005 - Dec - 08
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RainfallGUI2 extends JFrame {
//================================================ my instance variables
private RainfallStats _rainLogic; // Keeps data, calculates statistics.
private JTextField _averageTF = new JTextField(4);
private JTextField _numberTF = new JTextField(4);
private JTextArea _rainfallDataTA = new JTextArea(5, 20);
private JTextField _totalTF = new JTextField(4);
//========================================================== constructor
public RainfallGUI2() {
//... Set up the model / logic
_rainLogic = new RainfallStats(500); // Room for 500 data points.
//=========================================================== layout
//... Result Panel
JPanel resultPanel = new JPanel();
resultPanel.setLayout(new GridLayout(3, 2, 5, 5));
resultPanel.add(new JLabel("Total"));
resultPanel.add(_totalTF);
resultPanel.add(new JLabel("Number"));
resultPanel.add(_numberTF);
resultPanel.add(new JLabel("Average"));
resultPanel.add(_averageTF);
//... Build content pane
JPanel content = new JPanel();
content.setLayout(new BorderLayout(5, 5));
content.add(new JScrollPane(_rainfallDataTA), BorderLayout.C |