pl.tph.javatacka.game
Class GameMenu

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 pl.tph.javatacka.game.GameMenu
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class GameMenu
extends javax.swing.JFrame

Klasa GameMenu tworzy menu, w którym gracze mogą ustawić swoje preferencje dotyczące przebiegu gry. Wśród dostępnych opcji są następujące:

Ta klasa jest rozszerzeniem klasy JFrame z pakietu Swing.

Podobnie jak wszystkie operacje wykonywane na okienkach Swinga obiekty GameMenu należy tworzyć w wątku dystrybucji zdarzeń. Nowo utworzone menu należy następnie uwidocznić posługując się metodą klasy JFrame o nazwie setVisible().

Po kliknięciu przycisku Start! wszelkie ustawione opcje są wczytywane do obiektu klasy GamePreferences, którego referencję można uzyskać przy pomocy metody getGamePreferences().

Author:
Tomasz Pieczerak (tph)
See Also:
JFrame, GamePreferences, 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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  javax.swing.JButton[] colors
          Przyciski wyboru kolorów dla krzywych należących do graczy.
private  boolean done
          Flaga informująca czy został już kliknięty przycisk Start!
private  javax.swing.JButton[][] keys
          Przyciski informujące o sterowaniu poszczególnych graczy.
private static int MAX_PLAYERS
          Maksymalna dopuszczalna (i wyświetlana) liczba graczy.
private  javax.swing.JSpinner maxScore
          Pole wyboru limitu punktów w grze.
private  javax.swing.JPanel panel
          Główny panel, w którym wyświetlane są wszystkie komponenty menu.
private  javax.swing.JTextField[] players
          Pola tekstowe do wpisywania nazw graczy.
private  GamePreferences pref
          Obiekt przechowujący dane o ustawionych w menu preferencjach.
private  javax.swing.JButton quit
          Przycisk Wyjście.
private  javax.swing.JSlider speed
          Suwak wyboru prędkości gry.
private  javax.swing.JButton start
          Przycisk Start!
 
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
GameMenu()
          Bezargumentowy konstruktor klasy GameMenu, który konfiguruje okno menu gry.
 
Method Summary
 GamePreferences getGamePreferences()
          Zwraca referencję na obiekt GamePreferences, który przechowuje informacje o wybranych przez graczy opcjach gry.
private static int getLeftKeyCode(int player)
          Pomocnicza metoda zwracająca kod lewego klawisza dla gracza o podanym numerze lub -1, gdy podany numer gracza jest niepoprawny.
private static int getRightKeyCode(int player)
          Pomocnicza metoda zwracająca kod prawego klawisza dla gracza o podanym numerze lub -1, gdy podany numer gracza jest niepoprawny.
 boolean isDone()
          Zwraca true jeśli został kliknięty przycisk Start!
 void setDone(boolean done)
          Ustawia flagę gotowości menu na podaną wartość logiczną.
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, 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, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, 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, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, 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, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

MAX_PLAYERS

private static final int MAX_PLAYERS
Maksymalna dopuszczalna (i wyświetlana) liczba graczy.

See Also:
Constant Field Values

done

private boolean done
Flaga informująca czy został już kliknięty przycisk Start!, a ustawione opcje zostały wczytane.


pref

private GamePreferences pref
Obiekt przechowujący dane o ustawionych w menu preferencjach.


panel

private javax.swing.JPanel panel
Główny panel, w którym wyświetlane są wszystkie komponenty menu.


colors

private javax.swing.JButton[] colors
Przyciski wyboru kolorów dla krzywych należących do graczy.


keys

private javax.swing.JButton[][] keys
Przyciski informujące o sterowaniu poszczególnych graczy.


start

private javax.swing.JButton start
Przycisk Start!.


quit

private javax.swing.JButton quit
Przycisk Wyjście.


speed

private javax.swing.JSlider speed
Suwak wyboru prędkości gry.


maxScore

private javax.swing.JSpinner maxScore
Pole wyboru limitu punktów w grze.


players

private javax.swing.JTextField[] players
Pola tekstowe do wpisywania nazw graczy.

Constructor Detail

GameMenu

public GameMenu()
Bezargumentowy konstruktor klasy GameMenu, który konfiguruje okno menu gry.

Method Detail

isDone

public boolean isDone()
Zwraca true jeśli został kliknięty przycisk Start! i preferencje zostały wczytane do obiektu klasy GamePreferences. Można je teraz odczytać przy użyciu metody getGamePreferences().

See Also:
GamePreferences, getGamePreferences()

setDone

public void setDone(boolean done)
Ustawia flagę gotowości menu na podaną wartość logiczną. Tą metodę należy wywołać z parametrem false jeśli chcemy użyć to okno menu ponownie (po wciśnięciu przycisku Start!)

Parameters:
done - wartość logiczna flagi gotowości

getGamePreferences

public GamePreferences getGamePreferences()
Zwraca referencję na obiekt GamePreferences, który przechowuje informacje o wybranych przez graczy opcjach gry. Przed wywołaniem tej metody warto sprawdzić czy menu jest już gotowe (czyli czy dane zostały wczytane po kliknięciu przycisku Start!) przy pomocy metody isDone().

See Also:
isDone()

getLeftKeyCode

private static int getLeftKeyCode(int player)
Pomocnicza metoda zwracająca kod lewego klawisza dla gracza o podanym numerze lub -1, gdy podany numer gracza jest niepoprawny.

Parameters:
player - numer gracza (od 0 do 5)
Returns:
kod lewego klawisza
See Also:
KeyEvent, MouseEvent

getRightKeyCode

private static int getRightKeyCode(int player)
Pomocnicza metoda zwracająca kod prawego klawisza dla gracza o podanym numerze lub -1, gdy podany numer gracza jest niepoprawny.

Parameters:
player - numer gracza (od 0 do 5)
Returns:
kod prawego klawisza
See Also:
KeyEvent, MouseEvent