Way2Java

Java make Button Enabled

After learning GUI creation through 8 steps, for more command over button event handling, apart this one, another two programs are given – Changing Button Label and Making Button Invisible.

In the following program, three buttons are created with labels Red, Green and Blue. When Red button is clicked, the Blue button is enabled and when Green button is clicked, the enabled button is disabled. That is, Blue button toggles between the states enable and disable.

Concept-wise program is simple, but emphasis should be given to event handling and methods (like setEnabled() and setForeground() etc.) available for Button and how to use them.

Example code on Java make Button Enabled
import java.awt.*;
import java.awt.event.*;
public class ButtonEnabled extends Frame implements ActionListener
{
  Button redBut, greenBut, blueBut;
  public ButtonEnabled()
  {
    setLayout(new FlowLayout());    
   
    redBut = new Button("Red");
    greenBut = new Button("Green");
    blueBut = new Button("Blue");

    redBut.addActionListener(this);
    greenBut.addActionListener(this);
                                // beautification to buttons
    redBut.setForeground(Color.red);
    greenBut.setForeground(Color.green);
    blueBut.setForeground(Color.blue);

    add(redBut); 
    add(greenBut); 
    add(blueBut); 
        
    setTitle("Button Enable Disable");
    setSize(300, 300);
    setVisible(true);
  }
  public void actionPerformed(ActionEvent e)
  {
    Object obj = e.getSource();
    Button btn = (Button) obj;
  
    if(btn == redBut)
       blueBut.setEnabled(true);
    else if(btn == greenBut)
       blueBut.setEnabled(false);
    }
    public static void main(String args[])
    {
      new ButtonEnabled();
    }
}



Java make Button Enabled

Three buttons redBut, greenBut and blueBut are created and their foregrounds are changed with setForeground() method. Observe, the blueBut is not linked with ActionListener as it does not have any events to handle in the code.

The button, user interacted, can be known in two ways – by its label or by its object. You have seen in Changing Button Label program to distinguish using label of the button with getActionCommand() method. Now let us distinguish using the button object with getSource() method..

Object obj = e.getSource();
Button btn = (Button) obj;

The getSource() method of ActionEvent class returns the button object, clicked by the user, in the form of Object class. The object obj is explicitly type casted to Button object btn (a super class object, to assign to a subclass object, requires explicit casting). Now the btn object contains the reference of the button clicked by the user which is either redBut or greenBut.

The above two statements can be modified to a single statement by using anonymous object of Object class.

Button btn = (Button) e.getSource();

Programmers prefer the above style only.

blueBut.setEnabled(false);

setEnabled(false) method makes the button blueBut disabled. When a button is disabled, it does not raise any events.