Swing JFC Java

/*
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly 
*/
// ActionExampleButton.java
//An example of getting the Accessible information from a Button object.
//(You could see this information by attaching an AssistiveExample object
//to the button. See BigExample.java for an example of that attachment.)
//
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Locale;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleAction;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.accessibility.AccessibleStateSet;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class ActionExample extends Button implements ActionListener, Accessible {
  public ActionExample() {
    super("Press this Button");
    addActionListener(this);
  }
  public AccessibleContext getAccessibleContext() {
    return (new ActionAccessibleContext());
  }
  public void actionPerformed(ActionEvent e) {
    System.out.println("The button was pressed!");
  }
  public void processActionEvent(ActionEvent e) {
    super.processActionEvent(e);
  }
  // This class contains the accessible context for the component. Many
  // abstract methods simply call the SwingUtilities class to get the job
  // done; this is advised if you can get away with it. Otherwise, see the
  // source code for SwingUtilities.
  class ActionAccessibleContext extends AccessibleContext {
    public ActionAccessibleContext() {
      super();
      setAccessibleName("Button");
      setAccessibleDescription("Press the Button");
    }
    public AccessibleRole getAccessibleRole() {
      // Fill in whatever role you want here
      return (AccessibleRole.AWT_COMPONENT);
    }
    public AccessibleStateSet getAccessibleStateSet() {
      return SwingUtilities.getAccessibleStateSet(ActionExample.this);
    }
    public int getAccessibleIndexInParent() {
      return SwingUtilities
          .getAccessibleIndexInParent(ActionExample.this);
    }
    public int getAccessibleChildrenCount() {
      return SwingUtilities
          .getAccessibleChildrenCount(ActionExample.this);
    }
    public Accessible getAccessibleChild(int i) {
      return SwingUtilities.getAccessibleChild(ActionExample.this, i);
    }
    public Locale getLocale() {
      //  Ask the component what its locale is
      return ActionExample.this.getLocale();
    }
    public AccessibleAction getAccessibleAction() {
      return new AccessAction();
    }
  }
  // This class implements the AccessibleAction interface. Essentially, there
  // is only one action that is the equivalent of pushing the button.
  class AccessAction implements AccessibleAction {
    final int NUMBER_OF_ACTIONS = 1;
    final String DESCRIPTION = "Presses the button";
    public int getAccessibleActionCount() {
      return NUMBER_OF_ACTIONS;
    }
    public String getAccessibleActionDescription(int i) {
      if (i == 0)
        return (DESCRIPTION);
      else
        return null;
    }
    public boolean doAccessibleAction(int i) {
      if (i == 0) {
        // Simulate pressing a button
        ActionExample.this.processActionEvent(new ActionEvent(this,
            ActionEvent.ACTION_PERFORMED, ActionExample.this
                .getActionCommand()));
        return true;
      } else
        return false;
    }
  }
  public static void main(String s[]) {
    ActionExample example = new ActionExample();
    JFrame frame = new JFrame("AccessibleAction Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(example, BorderLayout.CENTER);
    frame.setSize(100, 100);
    frame.setVisible(true);
  }
}