Command Buttons and Event Handlers

Each command button has associated with it common method that is triggered when the user selects that button.  BreezySwing provides a default event handler method named buttonClicked that does nothing.  However, an application normally overrides this method by defining a method with the same name in the application window’s class.  Here is the code for associating this event handler method with the command button in the tax calculator program:

JButton convertButton = addButton ("Compute", 4,1,2,1);

 

public void buttonClicked(JButton buttonObj){

    double income = incomeField.getNumber();

    int numDependents = dependentsField.getNumber();

    double exemptionAmount = exemptionField.getNumber();

    double tax = (income - numDependents * exemptionAmount) * .15;

    taxField.setPrecision(2);

    taxField.setNumber(tax);

}

 

 

The JButton argument to the buttonClicked method is the button where the click occurred. If an application has more than one command button, the programmer uses an if/else statement in the buttonClicked method to determine which button was clicked and to take the appropriate action. For example, a program to convert between degrees Fahernheit and degrees Celsius might have two command buttons:

 

The temperature conversion program includes a single event handler for the two command buttons:

 

import javax.swing.*;

import BreezySwing.*;

 

public class TemperatureConvert extends GBFrame{

 

    JLabel degreesFahrenheitLabel      = addLabel ("Degrees Fahrenheit", 1,1,1,1);

    DoubleField degreesFahrenheitField = addDoubleField (32.0,           1,2,1,1);

    JLabel degreesCelsiusLabel         = addLabel ("Degrees Celsius",    2,1,1,1);

    DoubleField degreesCelsiusField    = addDoubleField (0.0,            2,2,1,1);

    JButton fToCButton                 = addButton ("F to C",            3,1,1,1);

    JButton cToFButton                 = addButton ("C to F",            3,2,1,1);

 

    // Use if/else statement to determine which button is clicked

    public void buttonClicked(JButton buttonObj){

        double fahrenheit, celsius;

        if (buttonObj == fToCButton){

            fahrenheit = degreesFahrenheitField.getNumber();

            celsius = (fahrenheit  - 32) * 5.0 / 9.0;

            degreesCelsiusField.setNumber (celsius);

        }

        else {

            celsius = degreesCelsiusField.getNumber();

            fahrenheit = celsius * 9.0 / 5.0 + 32;

            degreesFahrenheitField.setNumber (fahrenheit);

        }           

    }

 

    public static void main(String[] args){

        JFrame frm = new TemperatureConvert();

        frm.setTitle ("Temperature Conversion");

        frm.setSize (500, 100);

        frm.setVisible (true);

   }

}

 

 

 

Back to tutorial Next topic: Data entry fields