Class MyJFrame

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by MyJFrame
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class MyJFrame
extends javax.swing.JFrame
implements java.awt.event.ActionListener

Chapter 7 Basic GUI and Event Handling - Part II (Part I).
GUI objects such as buttons, text fields, labels and panels are placed on the content pane of a frame window. A frame has one JMenuBar object. A single JMenuBar can have many JMenu objects with many JMenuItem objects associated to a single JMenu object. While the variety of GUI objects may be extensive, the technique for nesting (adding) them to other objects is similar for each -for the content pane call its add method passing the object to be added as a parameter, likewise for the JMenuBar call its add method passing the menu to be added as a parameter, and to add menuItems to a menu just call the menu's add method passing the menuItem as a parameter. JMenuItems generate action events. In each case, the event source must register its event listener(s) so the system can pass the event object generated to the appropriate listener method.

Key Concepts:

  1. Multiple reference variables can refer to the same object.
  2. A wrapper class allows a primitive object to be managed as an object.
  3. Containers are special GUI components that hold and organize other components.
  4. A frame is displayed as a separate window, but a panel can only be displayed as part of another container.
  5. A frame has a title bar and content pane.
  6. To add a menu bar to the frame use the setJMenuBar and add methods.
  7. Every container is managed by a layout manager, to override this call setLayout passing it null.
  8. Panels can be nested to create an intricate containment hierarchy of components.
  9. A label or button can contain text, an image, or both.
  10. Right-click Save File As... => Source Code    splat.gif  computer.jpg      
    Another example from the Sun Java Tutorial: JButton.zip

    Author:
    Jack Tompkins
    See Also:
    Serialized Form

    Nested Class Summary
     
    Nested classes/interfaces inherited from class javax.swing.JFrame
    javax.swing.JFrame.AccessibleJFrame
     
    Nested classes/interfaces inherited from class java.awt.Frame
    java.awt.Frame.AccessibleAWTFrame
     
    Nested classes/interfaces inherited from class java.awt.Window
    java.awt.Window.AccessibleAWTWindow
     
    Nested classes/interfaces inherited from class java.awt.Container
    java.awt.Container.AccessibleAWTContainer
     
    Nested classes/interfaces inherited from class java.awt.Component
    java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
     
    Field Summary
    private  javax.swing.JButtonanotherButton
               
    private  intanotherButtonCount
               
    private  javax.swing.JButtonbutton
               
    private  intbuttonCount
               
    private  javax.swing.JTextFieldinputLine
               
    private  javax.swing.JLabellabel
               
     
    Fields inherited from class javax.swing.JFrame
    accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
     
    Fields inherited from class java.awt.Frame
    CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
     
    Fields inherited from class java.awt.Component
    BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
     
    Fields inherited from interface javax.swing.WindowConstants
    DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
     
    Fields inherited from interface java.awt.image.ImageObserver
    ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
     
    Constructor Summary
    MyJFrame()
              Set the title bar contents, set the size, set the default close operation, get the content pane and set its properties, set the JMenuBar and add menu(s) to it.
     
    Method Summary
     voidactionPerformed(java.awt.event.ActionEvent event)
              Determine which source generated the event.
    static voidmain(java.lang.String[] args)
               
     voidprocessJMenuItem(java.lang.String command)
              Process the menu.
     voidprocessJTextField(java.lang.String text)
              Process the text field.
     
    Methods inherited from class javax.swing.JFrame
    addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
     
    Methods inherited from class java.awt.Frame
    addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
     
    Methods inherited from class java.awt.Window
    addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, setLocationRelativeTo, show, toBack, toFront
     
    Methods inherited from class java.awt.Container
    add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
     
    Methods inherited from class java.awt.Component
    action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
     
    Methods inherited from class java.lang.Object
    clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
     
    Methods inherited from interface java.awt.MenuContainer
    getFont, postEvent
     

    Field Detail

    button

    private javax.swing.JButton button

    anotherButton

    private javax.swing.JButton anotherButton

    buttonCount

    private int buttonCount

    inputLine

    private javax.swing.JTextField inputLine

    label

    private javax.swing.JLabel label

    anotherButtonCount

    private int anotherButtonCount
    Constructor Detail

    MyJFrame

    public MyJFrame()
    Set the title bar contents, set the size, set the default close operation, get the content pane and set its properties, set the JMenuBar and add menu(s) to it.
    • Set layout
    • Set background
    Create buttons
    • Set bounds
    • Register action listener
    • Add to content pane
    Create text field
    • Set bounds
    • Register action listener
    • Add to content pane
    Set JMenu Bar
    • Add menu items to menu
    • Register action listener with menu items
    • Add menu to menu bar
    Create label
    • Set bounds
    • Add to content pane
    Method Detail

    main

    public static void main(java.lang.String[] args)

    actionPerformed

    public void actionPerformed(java.awt.event.ActionEvent event)
    Determine which source generated the event. If it was a button, distinguish between the two buttons and increment the respective button counter and button text. If the event source was an menu item, get the action command and pass the command to the processJMenuItem method. If the event source was the text field, pass the text to the processJTextField method.

    Specified by:
    actionPerformed in interface java.awt.event.ActionListener
    Parameters:
    event - generated by one of the three menu items, two buttons, or the text field.

    processJMenuItem

    public void processJMenuItem(java.lang.String command)
    Process the menu. If the menu command is "Clear Buttons" assign 0 to both button counters and set the respective button text to the counter values. If the command is "Quit" call System exit. Otherwise the third command generated the event and the bottom button has its text set to the hexadecimal value of the top button.

    Parameters:
    command - the text in the menu item ("Clear Buttons", "Quit", ...)

    processJTextField

    public void processJTextField(java.lang.String text)
    Process the text field. If the text field is empty increment the top button. If the text field has a number, convert the string and assign it to the button counter and update the button text. If the text field contains a hexidecimal number, convert the string to decimal and assign it to the button counter and update the button text.

    Parameters:
    text - the text from the input line.