Here is my source code:
Expand|Select|Wrap|Line Numbers
- import javax.swing.*;
- import javax.swing.JOptionPane.*;
- import javax.swing.JTabbedPane.*;
- import java.awt.*;
- import java.awt.event.*;
- public class WeightConverter extends JPanel{
- //main method will instantiate and display GUI
- public static void main(String[] args){
- JFrame frame = new JFrame("Weight Converter");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- JTabbedPane pane = new JTabbedPane();
- ConvertToOuncesPane panel_1 = new ConvertToOuncesPane();
- pane.addTab("Convert", panel_1);
- frame.getContentPane().add(pane);
- frame.pack();
- frame.setVisible(true);
- }
- //ConvertToOuncesPane class will create the pane for converting to ounces.
- static class ConvertToOuncesPane{
- //Set up new component identifiers
- JLabel tonsLabel, stonesLabel, poundsLabel, ouncesLabel, resultLabel;
- JTextField tonsField, stonesField, poundsField, ouncesField;
- JButton btnConvert, btnClear, btnExit;
- String resultString = "Total Number of Ounces: ";
- /*****************************************************************************\
- |
- |this method will be the primary constructor method for the class
- |
- \*****************************************************************************/
- public ConvertToOuncesPane(){
- //set up the labels for the input boxes
- tonsLabel = new JLabel("Enter number of tons:");
- stonesLabel = new JLabel("Enter number of stones:");
- poundsLabel = new JLabel("Enter number of pounds:");
- ouncesLabel = new JLabel("Enter number of pounds:");
- resultLabel = new JLabel(resultString + "---");
- //set up the input boxes
- tonsField = new JTextField(10);
- stonesField = new JTextField(10);
- poundsField = new JTextField(10);
- ouncesField = new JTextField(10);
- //set up the convert button and add action listener
- btnConvert = new JButton("Convert");
- btnConvert.addActionListener (new ConvertToListener());
- //set up the clear button and add action listener
- btnClear = new JButton("Clear");
- btnClear.addActionListener (new ClearToListener());
- //set up the exit button and add action listener
- btnExit = new JButton("Exit");
- btnExit.addActionListener (new ExitToListener());
- //add components to the pane
- JPanel panel = new JPanel();
- panel.add (tonsLabel);
- panel.add (tonsField);
- panel.add (stonesLabel);
- panel.add (stonesField);
- panel.add (poundsLabel);
- panel.add (poundsField);
- panel.add (ouncesLabel);
- panel.add (ouncesField);
- panel.add (resultLabel);
- panel.add (btnConvert);
- panel.add (btnClear);
- panel.add (btnExit);
- //set default values for textFields
- tonsField.setText("0");
- stonesField.setText("0");
- poundsField.setText("0");
- ouncesField.setText("0");
- //set up the look of the pane
- panel.setBackground(Color.white);
- panel.setPreferredSize(new Dimension(200, 280));
- }
- /**********************************************************************\
- |
- |the ConvertToListener class is dedicated to the convert button
- |on the Convert To Ounces Pane
- |
- \**********************************************************************/
- private class ConvertToListener implements ActionListener{
- public void actionPerformed(ActionEvent event){
- //set up variables for the ConvertListener class
- int tons = 0, stones = 0, pounds = 0, ounces = 0, totalOunces = 0;
- final int CONVERT_TONS = 32000, CONVERT_STONES = 224, CONVERT_POUNDS = 16;
- String errorMessage = "You must enter a number.";
- boolean testField;
- //collect, test, and parse integers from each textField
- //test tonsField
- testField = testInt(tonsField.getText());
- if (testField == true)
- tons = Integer.parseInt(tonsField.getText());
- else
- JOptionPane.showMessageDialog(null, errorMessage);
- //test stonesField
- testField = testInt(stonesField.getText());
- if (testField == true)
- stones = Integer.parseInt(stonesField.getText());
- else
- JOptionPane.showMessageDialog(null, errorMessage);
- //test poundsField
- testField = testInt(poundsField.getText());
- if (testField == true)
- pounds = Integer.parseInt(poundsField.getText());
- else
- JOptionPane.showMessageDialog(null, errorMessage);
- //test ouncesField
- testField = testInt(ouncesField.getText());
- if (testField == true)
- ounces = Integer.parseInt(ouncesField.getText());
- else
- JOptionPane.showMessageDialog(null, errorMessage);
- //perform the conversion calculation
- totalOunces = tons * CONVERT_TONS + stones * CONVERT_STONES + pounds * CONVERT_POUNDS + ounces;
- //display the result
- resultLabel.setText(resultString + totalOunces);
- }
- //set up a try-catch in the event a letter is entered into a field
- boolean testInt(String test){
- try{
- Integer.parseInt(test);
- }
- catch(NumberFormatException exception){
- return false;
- }
- return true;
- }
- }
- /***************************************************************************\
- |
- |the ClearToListener class is dedicated to the Clear button on
- |the Convert To Ounces Pane
- |
- \***************************************************************************/
- private class ClearToListener implements ActionListener{
- /****************************************************************\
- |
- |this method will restore the default zeros to all text fields
- |
- \****************************************************************/
- public void actionPerformed(ActionEvent event){
- //restore default values to textFields
- tonsField.setText("0");
- stonesField.setText("0");
- poundsField.setText("0");
- ouncesField.setText("0");
- }
- }
- /*******************************************************************************\
- |
- |the ExitToListener class is dedicated to the Exit button on the
- |Convert To Ounces Pane
- |
- \*******************************************************************************/
- private class ExitToListener implements ActionListener{
- /***********************************************************\
- |
- |this method will end the program when the user
- |clicks the exit button
- |
- \***********************************************************/
- public void actionPerformed(ActionEvent event){
- System.exit(0);
- }
- }
- }
- }