Answer:
public class ConversionCalculator extends JFrame {
private JLabel inch_Label, meter_Label, cm_Label, yard_Label;
private JButton clear, calculate, exit;
private JTextField inch_tf, cm_tf, meters_tf, yards_tf;
public ConversionCalculator()
{
exitButtonHandler exitB;
clearButtonHandler clearB;
calcButtonHandler calcB;
setTitle("Conversion Calculator");
setSize(600,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//The first layout we use will be 1 row with three columns
setLayout(new GridLayout(1,3));
//initialize all the components
inch_Label = new JLabel("Inches");
meter_Label = new JLabel("Meters");
cm_Label = new JLabel("Centimeters");
yard_Label = new JLabel("Yards");
clear = new JButton("Clear");
calculate = new JButton("Calculate");
exit = new JButton("Exit");
inch_tf = new JTextField("0.00");
cm_tf = new JTextField("0.00");
meters_tf = new JTextField("0.00");
yards_tf = new JTextField("0.00");
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(2,2));
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout(2,2));
JPanel panel3 = new JPanel();
panel3.setLayout(new GridLayout(3,1));
panel1.add(cm_Label);
panel1.add(cm_tf);
panel1.add(meter_Label);
panel1.add(meters_tf);
panel2.add(inch_Label);
panel2.add(inch_tf);
panel2.add(yard_Label);
panel2.add(yards_tf);
panel3.add(clear);
panel3.add(calculate);
panel3.add(exit);
add(panel1);
add(panel2);
add(panel3);
exitB = new exitButtonHandler();
exit.addActionListener(exitB);
clearB = new clearButtonHandler();
clear.addActionListener(clearB);
calcB = new calcButtonHandler();
calculate.addActionListener(calcB);
setVisible(true);
}
//public static void main(String[] args)
// {
// new ConversionCalculator();
//}
private class exitButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//exits program
System.exit(0);
}
}
private class clearButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//clear button sets all text fields to 0
inch_tf.setText("0.00");
meters_tf.setText("0.00");
yards_tf.setText("0.00");
cm_tf.setText("0.00");
}
}
private class calcButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
double inches, yards, meters, cms;
DecimalFormat df = new DecimalFormat("0.00");
//parse strings in textbox into doubles
inches = Double.parseDouble(inch_tf.getText());
yards = Double.parseDouble(yards_tf.getText());
meters = Double.parseDouble(meters_tf.getText());
cms = Double.parseDouble(cm_tf.getText());
//we check which value has been tampered with and base our conversion off this
//because of this it is important that the user clears, or else it will do inch conversion
if(inches != 0.00)
{
cms = inches * 2.54;
meters = cms / 100;
yards = inches / 36;
cm_tf.setText(df.format(cms));
meters_tf.setText(df.format(meters));
yards_tf.setText(df.format(yards));
}
else if(yards != 0.00)
{
inches = yards / 36;
cms = inches * 2.54;
meters = cms / 100;
cm_tf.setText(df.format(cms));
meters_tf.setText(df.format(meters));
inch_tf.setText(df.format(inches));
}
else if(meters != 0.00)
{
cms = meters * 100;
inches = cms / 2.54;
yards = inches / 36;
cm_tf.setText(df.format(cms));
inch_tf.setText(df.format(inches));
yards_tf.setText(df.format(yards));
}
else if(cms != 0.00)
{
inches = cms / 2.54;
yards = inches / 36;
meters = cms / 100;
meters_tf.setText(df.format(meters));
inch_tf.setText(df.format(inches));
yards_tf.setText(df.format(yards));
}
}
}
}
Explanation:
- Inside the action performed method, pass the strings in text box.
- check if the value has been modified then do the relevant conversions inside the conditional statement.
- When the user clears, it will not do to the inch conversion.